Cordova iOS WKWebView 整改完美解决方案

Cordova iOS WKWebView 整改完美解决方案

前言说明:2020年3月之前已经上线的项目,可以继续使用UIWebView继续迭代版本,每次提交审核会收到苹果的警告邮件;2020年3月之后的项目,必须使用WKWebView,提交审核才能通过,不然提示二进制数据错误。详情苹果官方说明点击下面链接

UIWebView弃用说明

下面开始介绍把现有或者新建的Cordova项目从使用UIWebView浏览器改造成使用WKWebview浏览器
一、首先安装cordova-plugin-wkwebview-engine插件
写给新手:首先cd cordova项目名称下面
比如:
cordova create Demo com.company.app Demo
cd Demo
cordova plugin add cordova-plugin-wkwebview-engine
老手都会添加插件

安装了插件,你再次运行,进行真机调试,日志就能看到using WKWebView,如果这一步做完了,真机运行出现白屏,找到这个文件cordova_plugins.js,里面的插件引用出现了问题,核对一下各个插件的路径对不对。 注意,安装了这个插件之后,就要把iOS最低兼容的iOS版本从iOS 8调到iOS 9+,看下面修改:

111 iOS 9+以上才支持WKWebView,至于苹果为什么要这么做呢,自己去百度百科WKWebVIew,会更安全,功能更强大。

二、解决跨域问题(这才是最重要的问题!)

打开Xcode找到这个文件CDVWKWebViewEngine.m,

找到这个方法,里面添加代码 - (WKWebViewConfiguration) createConfigurationFromSettings:(NSDictionary)settings {
WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init]; ... 这里还有一部分代码,不用删除 ... //在return上面添加下面两行代码 [configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"]; [configuration setValue:@YES forKey:@"_allowUniversalAccessFromFileURLs"]; return configuration; }

解决跨域问题,Cookie获取不到的情况。

三、修改config.xml文件,调整部分功能

1、支持页面右滑返回上一页,左滑进入下一页。

<preference name="AllowBackForwardNavigationGestures" value="true" />

注:前提是你打开过下一页。

特别建议:不建议开启这个功能,因为部分页面逻辑是不让随意返回到上一页的,业务逻辑混乱,数据异常,出现bug。

2、只支持WKWebView设置

<preference name="WKWebViewOnly" value="true" />

其他、3DTouch或者AirPlay什么的功能自己百度解决

四、去除苹果警告,顺利通过苹果审核,上架App Store

你发现,你上面的工作都做了,还是会收到苹果警告邮件或者二进制文件被拒绝。那是因为苹果通过代码检测,你的项目中还是存在UIWebView,下面教你怎么快速去除UIWebView的代码:

1、删除6个文件,看下图:

222

2、使用Xcode打开你的cordova ios项目,就是双击Demo.xcworkspace文件,搜索替换UIWebView为WKWebView. 这一步要注意,可能有一些三方SDK或者网络框架AFNetWork里面也包含UIWebVIew,这就要去更新这些SDK或者网络框架了,修改成WKWebView之后,运行报错的代码行请注释掉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值