我有一个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所以我把所有的东西都剥离到了准系统项目中,并且问题不再发生。我现在认为这个问题与实际的网页内容本身有关。如果我研究出了什么问题,我会回到这里。 –