DCloud_IOS_XTY
DCloud_IOS_XTY
  • 发布:2019-11-01 18:23
  • 更新:5 天前
  • 阅读:4112

iOS平台5+APP/WAP2APP使用WKWebview内核时由于内核崩溃引起白屏后自动恢复的方法

分类:HTML5+
h5+

HBuilderX 2.3.4+版本已将iOS上所有webview的默认内核由UIWebview调整为WKWebview请参考https://ask.dcloud.net.cn/article/36348,
当内存占用过大或者应用切换到后台内存被回收会导致WKWebview内核Crash引起应用白屏,为了提高体验App支持Crash后的恢复,开发者可以通过简单的配置支持该功能。

注意

目前该功能针对在前台的应用,如果应用在后台时会直接重新启动不适用该规则
uniapp有自己的恢复逻辑不适用该规则

支持的恢复行为

  • "restart"
    重启应用,关闭所有页面重新打开应用首页,可通过(plus.runtime.isRecovery)来判断应用是否恢复重启
  • "reload"
    重新加载当前WKWebview(崩溃的WKWebview)页面,页面中JS上下文中所有数据丢失,在当前Webview中可通过plus.webview.isRecovery判断是否恢复重新加载,在其它Webview中可监听recovery事件来判断
  • "none"
    不做任何操作

全局配置

manifest.json中配置默认值

    "plus": {  //uni-app项目对应节点名称为"app-plus"  
        "kernel": {  
            "ios": "WKWebview",  
            "recovery": "restart|reload|none"  
        },  
        // ...  
    }

webview配置

webview style新增kernelRecovery属性
通过该项可以自定义单个webview的恢复行为,覆盖全局配置
引用文档

示例
var webview = plus.webview.create("[url]","[id]", {kernelRecovery:"restart|reload|none"});

API

plus.webview.isRecovery
用于判断当前Webview窗口是否由于内核崩溃自动恢复,当配置reload时生效
引用文档

plus.runtime.isRecovery
用于判断当前应用是否是Webview崩溃自动恢复导致的启动,当配置restart时生效
引用文档

事件

recovery
当恢复行为配置为reload时,webview重新创建完成后会触发该事件,可以监听该事件做具体处理
引用文档

3 关注 分享
DCloud_iOS_XHY 3126085779@qq.com 穷鬼溪风

要回复文章请先登录注册

456vv

456vv

白屏+1,已经陪我多年。WKWebview宣染能力太差了,苹果的产品也就这样,都没有android一半强。
5 天前
504532934@qq.com

504532934@qq.com

白屏这个问题在最新版本依然存在,希望官方能解决一下。Hbuilder 3.1.2
2021-03-14 11:09
827504704@qq.com

827504704@qq.com

白屏+1,2.9.8版本,无法自动恢复
2021-03-03 11:05
562110125@qq.com

562110125@qq.com

ios手机放置一段时间后tab切换页白屏 +1。有没有大佬知道原因?
2021-02-03 16:14
xiewu5550@163.com

xiewu5550@163.com

ios手机放置一段时间后白屏
2021-01-21 19:25
穷鬼溪风

穷鬼溪风

白屏+1
2020-12-21 15:24
1446360207@qq.com

1446360207@qq.com

HbuilderX2.9.7 打包后,运行在IOS上还是会出现崩溃白屏的情况啊,还是没有解决啊
2020-12-17 21:06
670219467@qq.com

670219467@qq.com

uniapp 白屏+1
2020-09-25 09:54
AlanLee1473

AlanLee1473

回复 Stalker丶 :
+1出现白屏
2020-09-18 14:16
Stalker丶

Stalker丶

回复 529940822@qq.com :
请问一下,解决了吗,我也是遇到了tabbar或者有时候在其它页面跳转都会出现白屏的情况,也是用的 uniapp的vue
2020-09-01 16:19