如何防止在运行Cordova插件时关闭WKWebView

Rob*_*man 6 html5 ios cordova cordova-plugins wkwebview

我正在使用cordova-plugin-wkwebview-engine插件在Cordova中运行我的html5应用程序.由于WKWebView架构,webview被加载到另一个线程中.现在,当我从Cordova打开另一个线程(EG.使用相机插件拍照)并且iOS在相机视图处于活动状态时发出内存警告时,webview被杀死.

显然,WKWebView视图像后台线程一样被处理并被停止.现在,当相机返回时,应用程序为空白(白色屏幕),因为webview不再存在.在UIWebView(由于WKWebView中的更好性能而放弃)在应用程序的主线程上运行,因此永远不会被杀死.

有什么方法可以阻止WKWebView被关闭吗?如果应用程序无法保持主应用程序运行WKWebView对于除显示网页叠加之外的任何内容都是无用的.

Chr*_*aze 2

看起来仍然存在相当多的内存管理问题WKWebView,以及一些可能对解决您的问题有用的 iOS 9 安全更改。

以下是 Apple 支持人员对 WKWebView 返回空白而不只是导致应用程序崩溃的原因的推理:

虽然 WKWebView 进程可能会超出其内存预算,但这样做不会导致您的应用程序终止,最多应该会导致空白视图。

另外,这个问题揭示了NSAppTransportSecurity Protocol(iOS 9 的变化)也导致了类似的问题。尽管它与内存无关,但如果您在任一 WKWebView 实例中使用非安全 URL,则可能值得研究一下。

如果您在任一请求期间使用HTTP URL,则必须包括:

<key>NSAppTransportSecurity</key>  
<dict> 
   <key>NSAllowsArbitraryLoads</key><true/>  
</dict> 
Run Code Online (Sandbox Code Playgroud)

在您的应用程序.plist文件中。

如果您仍然无法解决问题,我建议您查看 chromium论坛,并WKWebView,可能降低相机插件的质量参数以减少内存问题。