iOS常见问题汇总

我的代码我的坑(三) —— iOS9系统WKWebView加载页

2018-08-16  本文已影响181人  刀客传奇

版本记录

版本号 时间
V1.0 2018.08.16

前言

做了好几个APP,碰到了大大小小的很多坑,以前碰到坑,解决了就结束了,这里想把自己碰到的坑记录下来,一来给自己备查二来希望可以帮助到大家。感兴趣的可以关注下,也欢迎大家补充留言,感兴趣的看上面几篇文章。
1. 我的代码我的坑(一) —— 自签名证书导致请求取消的问题(一)
2. 我的代码我的坑(二) —— UIImageView动画点击后动画和图片消失的问题(一)

问题描述

最近对项目中的webview框架进行了更改,由原先的UIWebView更改为后来的WKWebview,但是在测试的时候发现,对于iOS 9.0的系统加载出来就是一个白板,但是对于iOS11系统来说就是正常的。如下所示:

而且,即使我将H5地址放在iOS 9.0系统机器的Safari中也是没办法打开的。


问题解决

首先我就检查了下,看是不是我用了iOS 9.0限制的方法,但是没有找到,我用的都是9.0之前就已经有的方法了。

然后我打断点,下面的代理方法也返回了,说明了一个问题,我得到了这个数据,只是没有展示出来而已。

// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;

然后,我就是上网查找答案,有很多人遇到这个问题,通过添加info.plist的key-value解决的。

//修改info.plist文件
    <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>

但是上面这个方案其实是为了解决下面这个报错采用的。

Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.

但是,这个key其实我们项目中早就加过了,并且没有这个报错,所以这个方法并不是我的问题的答案。

后来,我接着去尝试来排除各种因素的影响,当我在webview里面加载页面的url写死为百度的时候,如下:

urlString = @"https://www.baidu.com";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.webView loadRequest:request];

这样项目内的任何H5页面都会链接到百度,run起来以后发现,加载百度是成功的,这就说明了不是我们客户端的问题,而是H5加载渲染页面的问题。

后来找来前端的人员看了一下,证明了我的猜想是正确的,前端使用了node-jsonp插件,导致了在iOS 9.0系统上没有办法渲染出来页面。所以后来前端移除了这个插件,客户端就顺利的显示出来了。

后记

本篇讲述了iOS9系统WKWebview加载页面白板的问题,感兴趣的给个赞或者关注~~~

上一篇下一篇

猜你喜欢

热点阅读