2020年3月之前已經上線的項目,可以繼續使用UIWebView繼續迭代版本,每次提交審核會收到蘋果的警告郵件;2020年3月之后的項目,必須使用WKWebView,提交審核才能通過,不然提示二進制數據錯誤。審核不通過
官方已經發布了支持WKWebView的cordova ios@6.1.0,去掉了UIWebVIew,看下面操作:
cordova platforms rm ios
cordova platforms add ios@6.1.0
看完上面就完了,下面開始介紹把現有或者新建的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之后,運行報錯的代碼行請注釋掉。
原文鏈接:https://blog.csdn.net/qq_38904099/article/details/107559724