iOS WKWebview加载本地的HTML文件报错 Error Domain=kCFErrorDomainCFNetwork Code=1

出错案例

本地沙盒有多个HTML文件及资源,使用loadFileURL方法轮流加载HTML文件,第一次加载正常,第二次加载出错。并且报错Error Domain=kCFErrorDomainCFNetwork Code=1
这个错误只在真机上会出现,模拟器上可以正常的加载第二个第三个等HTML文件。

原因

http://www.openradar.me/45346962
https://stackoverflow.com/questions/40472796/wkwebview-loadfileurl-works-only-once
通过查询得出原因可能是出在loadFileURL这个方法第二个参数readAccess上。

- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL API_AVAILABLE(macosx(10.11), ios(9.0));

这个参数传HTML需要访问的资源路径。我在传参的时候,加载哪个HTML文件,就传哪个HTML的资源文件路径。但是WKWebview会锁定第一次传的资源路径,之后再传都会不起作用。这就导致我加载第二个HTML文件的时候找不到资源文件而报错。

解决方案

把所有本地HTML文件放在同一文件夹下,readAccessURL传所有HTML文件的资源路径。


沙盒路径

如图,51、52、53等文件夹里都是一个独立的网页和资源,readAccessURL应该传unzip文件夹的路径,而不是51文件夹的路径。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容