Cordova 项目从 UIWebView 更换为 WKWebView
也可查看我的公开笔记:https://www.yinxiang.com/everhub/note/325e6d46-9255-45de-bad3-58689a2022a4
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs.
一、添加 cordova-ios 平台环境
cordova platform add ios@5.1.1 --save
二、添加 WKWebView 插件
https://www.npmjs.com/package/cordova-plugin-wkwebview-engine
Cordova 项目中添加 cordova-plugin-wkwebview-engine 插件(当前最新版本1.2.1)
cordova plugin add cordova-plugin-wkwebview-engine
config.xml 中添加配置
<platform name="ios"> <preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> </platform>
三、解决 WKWebView 无法访问 http/https 请求
https://www.npmjs.com/package/cordova-plugin-wkwebview-file-xhr
cordova plugin add cordova-plugin-wkwebview-file-xhr
config.xml 中添加配置
<preference name="InterceptRemoteRequests" value="all" />
除了项目从 UIWebView 更换为 WKWebView 外,项目中所有使用的 Cordova 插件都不能有 UIWebView 的 API。项目中使用的插件更新至最新版本(如果作者进行了适配),若插件不适配需考虑寻找替代插件。
官方说明:https://cordova.apache.org/howto/2020/03/18/wkwebviewonly.html
2020年07月31日笔记更新
Cordova 官方已发布了最新版本 Cordova iOS 6.1.0
官方 GitHub 网址:https://github.com/apache/cordova-ios
自 Cordova ios 6.0.0 版本开始,只支持 WKWebView 移除了 UIWebView 代码,因此 cordova-plugin-wkwebview-engine
插件被弃用,因安全策略导致的 CORS 问题,将通过首选项设置。启动页配置也有相应更新,具体更新内容见官方博客:
Cordova ios 6.0.0:https://cordova.apache.org/announcements/2020/06/01/cordova-ios-release-6.0.0.html
Cordova ios 6.1.0:https://cordova.apache.org/announcements/2020/06/23/cordova-ios-6.1.0.html
启动页设置(cordova-plugin-splashscreen
):https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/index.html
ITMS-90809 警告说明:https://cordova.apache.org/howto/2020/07/18/uiwebview-warning.html