公司的一个iOS app登录界面是原生开发,登录成功后打开一个webview加载web页面。第二次登录就看是否保存了token,如果有就直接打开webview加载。但是测试反应登录后在后台放一段时间,重新打开有一定几率出现白屏。
调试发现打开后,webview显示已经加载完成,只是内容什么都没有。
首先考虑缓存问题,在应用初始化时,清除webview的缓存。
- (void)cleanWKWebView{
NSArray *types = @[WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeDiskCache];
NSSet *websiteDataTypes = [NSSet setWithArray:types];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore]removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
TYDLog(@"WKWebView清理完成");
}];
}
- (void)clearWbCache {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
}
修改后,发现白屏问题仍旧存在。发现控制台打印
wkwebview domain = NSURLErro