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+,看下面修改:

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个文件,看下图:

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

Cordova iOS WKWebView 整改完美解决方案相关推荐

  1. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard .xib 混用.完美解决方案) 参考文章: (1)IOS APP 国际化 程序内切换语言实现 不重新启动系统 ...

  2. iOS 限制输入字数完美解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 关于限制输入字数以前也做过,网上也很多方法. 但都不够完美,以前的测试人员也没千方百计的挑毛病,所以就糊弄过去了. 现在这个项 ...

  3. iOS WKWebView的使用以及遇到的问题

    iOS WKWebView的使用以及遇到的问题 一.WKWebView简介 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebVi ...

  4. IOS input auto focus 解决方案探究

    IOS input auto focus 解决方案探究 开发过hybird的人都知道,在IOS手机下面处于安全策略考虑,不允许JS自动获取input输入框的焦点并调出虚拟键盘,可是从产品角度来看,往往 ...

  5. asp.net2.0导出pdf文件完美解决方案【月儿原创】

    asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.5.28 PDF简介:PDF(P ...

  6. “IIS配置401错误”完美解决方案

    "IIS配置401错误"完美解决方案   1.错误号401.1 症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝. 分析: 由于用户匿名访问使用的账号(默认是 ...

  7. google地图经纬度偏移修正算法完美解决方案

    google地图经纬度偏移修正算法完美解决方案 参考文章: (1)google地图经纬度偏移修正算法完美解决方案 (2)https://www.cnblogs.com/moonvan/archive/ ...

  8. 移动端滚动穿透问题完美解决方案

    移动端滚动穿透问题完美解决方案 参考文章: (1)移动端滚动穿透问题完美解决方案 (2)https://www.cnblogs.com/yaiza/p/11384130.html 备忘一下.

  9. [原创]java读写word文档,完美解决方案

    [原创]java读写word文档,完美解决方案 参考文章: (1)[原创]java读写word文档,完美解决方案 (2)https://www.cnblogs.com/ziwuxian/p/89812 ...

最新文章

  1. Python面向对象编程:深度认识类class
  2. Oracle学习笔记整理手册
  3. mysql for centos下载_python数据分析之路——centos下载并配置mysql与navicat的使用
  4. 785. Is Graph Bipartite? 判断二分图
  5. SpringCloud学习笔记(1)- Spring Cloud Netflix
  6. 推荐:Java性能优化系列集锦
  7. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  8. python去头去尾.strip()函数用法:
  9. vue路由报错Avoided redundant navigation
  10. 关于android各平台上架心得
  11. 数据结构学习笔记:算法复杂度的度量之“大O记号”
  12. MySQL的备份、恢复
  13. H5填坑笔记--持续更新
  14. 《虚拟化安全解决方案》一1.2 虚拟环境的威胁
  15. EXCEL批量替换公式数据变成真两位小数
  16. c语言学习-输入一个圆的半径,分别求圆的周长,面积和体积
  17. java mediacoder_MediaCoder转移动设备MP4(高清)
  18. 实现一个简单的计算器
  19. oracle宿主常量及变量,oracle入门札记
  20. UiPath Orchestrator 证书更新

热门文章

  1. APP设计干货|切图基本知识点规范
  2. mysql列的数值型,字符型,日期型
  3. readline库实现命令行自动补全
  4. spss方差分析_交叉设计及SPSS多因素方差分析
  5. java安装的时候无效参数,spring-boot 打成jar把后 启动时指定参数无效
  6. 代码 纪录 软件_「软件资料」-「资讯动态」-软件开发类项目关键文档内容要求...
  7. eigen 列拼接_R语言-强大的矩阵运算
  8. 启动报错 classnofoundexception org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  9. OpenShift 4 - DevSecOps (2) - 修复 RHACS 发现的安全隐患
  10. .NET库和向后兼容的技巧——第2部分