我有一個WKWebView,使用WKWebViewConfiguration
加載本地一組網頁,將@"allowFileAccessFromFileURLs"
的配置設置爲true。WKWebView以某些網頁配置掛起本地網頁加載。
請求設置了這樣的事情:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"testPage" withExtension:@"html" subdirectory:@"html/pages"];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0f];
然後請求使用以下WKWebview方法發送:
- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request;
我的問題是在設備有一個當前連接,但沒有網絡流量。 webview作爲屏幕上的一個元素將被添加到屏幕上,並且會提出請求,但webview會在顯示本地內容之前顯示約50秒的白色屏幕。
無論網絡狀態如何,webview中的所有內容都會在沒有鏈接調節器設置時在本地加載。
例如,如果設備連接到無線網絡,但網絡鏈路調節器設置爲100%丟失。 webview被創建並且發送請求來加載觸發負載掛起的本地內容。
我有一個想法,它可能是WKWebView試圖在需要網絡事務的背景做某種驗證,但我做了一些網絡與儀器分析,還有一些時間軸記錄在Safari瀏覽器中,我無法看到任何會導致它掛起的東西。
我能想到它在50秒左右加載本地內容的唯一原因是它的某種WKWebView超時加載網絡連接。
任何幫助將不勝感激,謝謝。
我創建了一個基於您提供的代碼的示例項目,將網絡鏈接condi到100%的損失(證實模擬器中的Safari沒有互聯網連接),並且無法重現此問題。你能否發佈能夠重現問題的代碼(儘可能簡單,忽略任何不相關的細節)? – paulvs
嘿謝謝@paulvs的努力!我現在把一個更好的例子放在一起。 –
@paulvs所以我把所有的東西都剝離到了準系統項目中,並且問題不再發生。我現在認爲這個問題與實際的網頁內容本身有關。如果我研究出了什麼問題,我會回到這裏。 –