即使是使用Cordova WKWebview Engine插件的基本Ionic项目也会产生白屏

时间:2016-04-07 13:18:43

标签: ios cordova uiwebview ionic-framework wkwebview

我的问题: 我发现的离子应用程序非常慢,在发现UIWebView是罪魁祸首后,我正在寻找加速它的方法,WKWebView是最有前途的解决方案。

我的项目是什么样的: 使用当前的Cordova 4.1.0 CLI(我使用的是Ionic 1.2.4)设置示例离子项目(例如http://ccoenraets.github.io/ionic-tutorial/install-ionic.html)时,默认使用UIWebView。但是,自Cordova 4以来,新的和更快的WKWebView支持开箱即用,并且可以强制使用,至少在iOS 9(cordova 4 supports WKWebView)中。

我使用的插件&构造 通过cordova plugin add cordova-plugin-wkwebview-engine,为iOS平台添加了支持(现在为9.3)。在config.xml中使用

添加并正确配置此插件时

<feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

到目前为止我尝试了什么: 在终端ionic build ios中,然后构建成功,当在OS​​ X El Capitan 10.11.3上通过XCode 7.3在控制台日志中安装应用程序时,会打印Using WKWebView消息,但是在启动画面之后,应用程序容器逐渐变成白色的死亡屏幕。一旦我删除该插件,就会使用UIWebView并且应用程序可以按预期工作。

替代:将原始插件wkwebview-engine-localhost替换为具有集成localhost的插件,可以正常工作。据我所知,WKWebview应该得到cordova和ionic的支持,而不必依赖一些带有集成服务器的“labs插件”,该服务器是为了支持我不需要的iOS 8而开发的。我知道WKWebView与旧的UIWebView相比有一些限制,特别是在处理file://语句known issues时,但肯定有人在那里让Ionic + Cordova WKWebView无需全部工作我有麻烦,对吧?必须有更好的方法来实现webview的简单速度改进。

我尝试了每个解决方案,配置,插件组合,cordova cli版本降级(WKWebView支持最低为4.0.0),清除缓存,重置和重启设备,新安装和平台读取以及cordova更新, npm,各种插件,但除了上面的apache labs插件之外,所有插件都没有任何帮助,或者看起来像是一个没有改变任何东西的巨大混乱。

当通过我的本地Safari远程调试设备上的ios应用程序时,我可以在元素树中看到,body标签保持为空,或者显示角元素的简单“ng-view”占位符。我是否正确通过WKWwebView处理它的方式检索文件/角度脚本一定存在问题?

注意:仅当通过XCode部署到真实设备时,应用程序本身才能正常运行ionic serveionic emulate ios(因为ionic run ios不起作用,但这是不同的故事)白屏出现。

非常感谢任何帮助,因为在我看来,我必须使用localhost + wkwebview插件或者让用户受到速度不佳的影响。

非常感谢!

2 个答案:

答案 0 :(得分:9)

我有一个与WKWebview合作的ionic2项目。我认为我采取的步骤也适用于ionic1:

1)安装WKWebview插件:

ionic plugin add cordova-plugin-wkwebview-engine

2)安装本地webserver插件:

ionic plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugins.git#master:local-webserver

3)在config.xml中添加/更改以下内容:

...

<content src="http://localhost:8080" />

...

<allow-navigation href="gap://ready" />
<allow-navigation href="http://localhost:*" />

...

<feature name="CDVWKWebViewEngine">
    <param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

答案 1 :(得分:1)

我正在研究使用CrossWalk for IOS,它具有WkWebView的实现功能。

https://crosswalk-project.org/documentation/ios.html

该项目得到了英特尔的支持,因此它背后有坚实的支持。

另一种选择是尝试安装Telerik开发的以下插件,该插件在WKWebView中交换。

https://github.com/Telerik-Verified-Plugins/WKWebView

Cordova也正在转向使用插件支持WKWebView。对WKWebView的支持非常糟糕。自iOS7问世以来,它就充斥着各种各样的漏洞。每个ios版本都会慢慢修复。

这是希望iOS 10做出一些改进。