【ios】ios 对于wkwebview白屏问题

本文介绍了解决iOS应用中WKWebView加载HTTP资源导致的白屏问题。通过实现WKNavigationDelegate的方法,定位到加载失败的原因是App Transport Security策略拒绝不安全连接。最终通过将HTTP URL替换成HTTPS来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

问题

在根据《IOS开发指南 从helloworld到AppStore上架 第四版》学习的时候,看到第八章『树形导航结构』使用WKWebView进行三级导航展示详情,发现白屏

解决方案

WKWebView根据『WKNavigationDelegate』协议有几个方法,可以追踪加载进度


- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
    NSLog(@"准备加载页面");
}

- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {
    NSLog(@"开始加载页面");
}

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    NSLog(@"已加载全部页面");
}

- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    NSLog(@"加载失败1");
}

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    NSLog(@"加载失败2%@",error.userInfo);
}

重新执行后,发现进入了didFailProvisionalNavigation方法,这个时候我们打印error.code得到值为-1022

2017-09-22 11:08:40.096041+0800 treeNavigation[6176:2793155] http://baike.baidu.com/view/3961.htm
2017-09-22 11:08:40.171849+0800 treeNavigation[6176:2793155] 准备加载页面
2017-09-22 11:08:40.184887+0800 treeNavigation[6176:2793155] 加载失败2{
    NSErrorFailingURLKey = "http://baike.baidu.com/view/3961.htm";
    NSErrorFailingURLStringKey = "http://baike.baidu.com/view/3961.htm";
    NSLocalizedDescription = "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.";
    NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1022 \"(null)\"";
    "_WKRecoveryAttempterErrorKey" = "<WKReloadFrameErrorRecoveryAttempter: 0x17403eae0>";
}

看到这里基本上就能猜到https的问题了,然后我们将url进行一次搜索替换,就可以了。

self.url = [self.url stringByReplacingOccurrencesOfString:@"http://" withString:@"https://"];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值