我的问题: 我发现的离子应用程序非常慢,在发现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 serve
或ionic emulate ios
(因为ionic run ios
不起作用,但这是不同的故事)白屏出现。
非常感谢任何帮助,因为在我看来,我必须使用localhost + wkwebview插件或者让用户受到速度不佳的影响。
非常感谢!
答案 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做出一些改进。