首页 文章

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

提问于
浏览
9

My problem: 离子应用程序我正在寻找加快速度的方法,WKWebView是最有前途的解决方案 .

What my project looks like: 使用当前的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)中 .

The plugin I used & configured: 通过 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" />

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

替代方案:将原始插件wkwebview-engine-localhost替换为具有集成localhost的插件,可以正常工作 . 据我所知,WKWebview应该得到cordova和ionic的支持,开箱即用,而不必依赖一些集成服务器,这是为了支持我不需要的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处理它的方式检索文件/角度脚本一定存在问题?

注意:应用程序本身工作正常,无论是 ionic serve 还是 ionic emulate ios ,只有在通过XCode部署到真实设备时(因为 ionic run ios 不是_1379109,这是一个不同的故事),才会出现白屏 .

任何帮助都非常感谢,因为在我看来,我必须使用localhost wkwebview插件或让用户遭受速度不佳 .

非常感谢!

2 回答

  • 1

    我有一个与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" />
    
  • 9

    我正在研究使用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做出一些改进 .

相关问题