部分开发者反馈app在iOS12上会崩溃,而同样代码在iOS12以下的手机正常。但也并非所有代码写法都会引发崩溃。
苹果最新的策略在iOS12及以后系统将不再维护UIWebview内核,都推荐改为WKWebview。
目前5+App、wap2app打包时,默认是UIWebview。uni-app默认是WKWebview。
所以5+App、wap2app的开发者,如果遇到iOS12的兼容问题,有如下方案:
1. 将app的iOS webview内核更改为WKWebview
在manifest.json的plus->kernel->ios节点中配置默认使用WKWebviwe内核:
//...
"plus": {
"kernel": {
"ios": "WKWebview"
},
//...
}
注意:
- 目前使用WKWebview内核不支持“启用js原生混淆”功能,云端打包iOS时不要勾选此项配置。
- wgt资源加密要注意,iOS一旦使用WKWebview也不支持解压加密的wgt资源。
- WKWebview里HTML5的存储如cookie、localstorage等和UIWebview不互通,应用升级后,手机端老的cookie等数据拿不到了。
- WKWebview不支持overrideresource。
2. 优化代码写法,避免崩溃
如果代码里有容易引发内存占用且没有回收的代码,比如不停运行的计时器,在UIWebview下更容易崩溃。
在js里不停大范围修改整体dom引发不停重布局,也容易崩溃。
如果配置为WKWebviw内核还存在闪退问题,请提供出现问题的ipa,并详细说明操作出现闪退的步骤。
另,由于一个三方库和iOS12的模拟器冲突了,HBuilde早期版本在真机运行到iOS12模拟器会无法启动,请升级到最新版。此问题不影响真机。
13 个评论
要回复文章请先登录或注册
首席劝退师
1***@qq.com
1***@qq.com
DCloud_App_Array (作者)
h***@163.com
uniapper
时光可见
DCloud_App_Array (作者)
cydida
uniapper