出錯案例
本地沙盒有多個HTML文件及資源,使用loadFileURL方法輪流加載HTML文件,第一次加載正常,第二次加載出錯。并且報錯Error Domain=kCFErrorDomainCFNetwork Code=1
這個錯誤只在真機上會出現(xiàn),模擬器上可以正常的加載第二個第三個等HTML文件。
原因
http://www.openradar.me/45346962
https://stackoverflow.com/questions/40472796/wkwebview-loadfileurl-works-only-once
通過查詢得出原因可能是出在loadFileURL這個方法第二個參數(shù)readAccess上。
- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL API_AVAILABLE(macosx(10.11), ios(9.0));
這個參數(shù)傳HTML需要訪問的資源路徑。我在傳參的時候,加載哪個HTML文件,就傳哪個HTML的資源文件路徑。但是WKWebview會鎖定第一次傳的資源路徑,之后再傳都會不起作用。這就導致我加載第二個HTML文件的時候找不到資源文件而報錯。
解決方案
把所有本地HTML文件放在同一文件夾下,readAccessURL傳所有HTML文件的資源路徑。

沙盒路徑
如圖,51、52、53等文件夾里都是一個獨立的網(wǎng)頁和資源,readAccessURL應該傳unzip文件夾的路徑,而不是51文件夾的路徑。