我正在开发(并且即将发布)适用于 iOS 和 Android 的 Cordova 应用程序。
我正在尝试使用 cordova-plugin-ionic-webview 以使用最新的 WebView 引擎。
我可以在 iOS 上使用这个插件,但在 Android 上,应用程序在启动时崩溃。
我的配置.XML:
<allow-navigation href="cordovaios://*" />
<allow-navigation href="cordovaandroid://*" />
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.0">
<variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
</plugin>
<preference name="Hostname" value="my-backend-url-to-avoid-CORS.com" />
<preference name="iosScheme" value="cordovaios" />
<preference name="Scheme" value="cordovaandroid" />
<preference name="ScrollEnabled" value="true" />
<preference name="MixedContentMode" value="0" />
<preference name="AllowBackForwardNavigationGestures" value="true" />
<preference name="Allow3DTouchLinkPreview" value="false" />
<preference name="WKSuspendInBackground" value="false" />
<preference name="KeyboardAppearanceDark" value="false" />
日志:
5726-5770/mycertificate.enterprise D/SERVER:处理本地请求:cordovaandroid://my-backend-url-to-avoid-CORS.com/static/js/10.601e7973.chunk.js
5726-5773/mycertificate.enterprise E/chromium: [ERROR:render_process_host_impl.cc(4070)] 因错误的 Mojo 消息终止渲染进程:收到错误的用户消息:来源无效
5726-5773/mycertificate.enterprise E/chromium: [ERROR:bad_message.cc(23)] 因错误的 IPC 消息而终止渲染器,原因 123
注意:
此配置在 iOS 上运行良好。在 Android 上,由于这个主机名/来源问题,我无法使用这个插件。
似乎不支持该自定义方案(只需尝试在源代码中找到类似的东西)。这也超出了我的理解,因为什么人甚至需要注册一个自定义协议处理程序,同时永远不会离开那个
WebView
?通常的目的是:打开另一个应用程序。
<preference name="Scheme" value="https" />
<allow-navigation href="https://my-backend-url-to-avoid-CORS.com/*"/>
不幸的是,Cordova Android Platform 版本和插件版本之间存在很多不匹配,导致一些时间白白浪费。这么说,对于我遇到的类似问题,我只是修复了他们降级 Cordova 或 Android 或插件的版本(或者使用插件在他们的代码示例中使用的相同版本的 android)。
在 config.xml 中尝试添加:
<allow-navigation href="*"/>
之后:
<preference name="Scheme" value="https" />
<preference name="hostname" value="mobile.*.yourdomain.com" />