美文网首页iOS常见问题汇总
我的代码我的坑(三) —— iOS9系统WKWebView加载页

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

作者: 刀客传奇 | 来源:发表于2018-08-16 09:21 被阅读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加载页面白板的问题,感兴趣的给个赞或者关注~~~

    相关文章

      网友评论

      • 我是一坨牛粪:我觉得应该是插件不支持es6语法,当时我碰到是不支持es6语法
        刀客传奇:我这边是H5那边的一个插件问题,删除了就好了,就不是白板了

      本文标题:我的代码我的坑(三) —— iOS9系统WKWebView加载页

      本文链接:https://www.haomeiwen.com/subject/pacnbftx.html