gpt4 book ai didi

ios - 如何确定 WKWebView 崩溃的原因

转载 作者:技术小花猫 更新时间:2023-10-29 10:38:06 27 4
gpt4 key购买 nike

我在为 iOS 8+ 构建的 Swift 应用程序中使用 WKWebView。我在我的应用程序的各种 View 中使用 WKWebView 的实例,例如在我的选项卡 View Controller 的每个选项卡中,界面都是基于 WKWebView 的。

我和我的测试人员注意到这些 View 有时会完全空白,在研究该问题后,WKWebView 似乎会崩溃,结果就是空白 View 。幸运的是,由于 WKWebView 的运行方式,它不会导致应用程序崩溃,但我也不清楚如何捕获/记录有关导致它崩溃的原因的信息(如果这确实发生了什么)。

如何确定 WKWebView 是否/为何崩溃?

我目前解决这个问题的方法是我使用 KVO(实际上是 Facebook 的 KVOController)来监视 WKWebView 的“URL”属性,如果它从非零变为零,我假设崩溃了发生了,我重新加载了 webview:

kvoController?.observe(webView, keyPath: "URL", options: NSKeyValueObservingOptions.New|NSKeyValueObservingOptions.Old) { (areaViewController, webView, change) -> Void in
if change[NSKeyValueChangeNewKey] is NSNull && !(change[NSKeyValueChangeOldKey] is NSNull) {
areaViewController.setup() // reload our webview
}
}

但显然,找出崩溃的根本原因会很好。

最佳答案

这是一个非常讨厌的 WKWebView 问题,我们在 Firefox for iOS 中也遇到过。

请参阅以下错误报告 https://bugs.webkit.org/show_bug.cgi?id=148685

我没有很好的解决方案,但我有两个提示:

首先,当我们通过 KVO 发现 webView.URL 变为 nil 时,我们也在进行重新加载。然而,事实证明它在许多事件上变成了 nil。例如,当重定向发生时,也可能在提交表单时。所以这并不理想。

其次,在 iOS9 中有一个新的 API 可以检测 WebKit 内容进程何时终止。我们还没有尝试过这个,但我认为这将是重新加载 webView 的更好触发器。

我认为还没有文档,但您可以在头文件中看到:

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0);

关于ios - 如何确定 WKWebView 崩溃的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com