在 Angular 混合应用程序中未触发 deviceready 事件

Iva*_*lov 2 android cordova cordova-plugins angular angular6

我正在构建一个全平台 Angular 6 APP,它将与 Cordova 8.1.2 一起打包,不幸的是我无法触发 deviceready事件。

我有两个单独的项目,一个用于 Angular,一个用于 Cordova,我能够构建以构建 Angular 项目并使用以下命令创建一个 android apk:

ng build --prod --base-href . --output-path ../Cordova/CordovaMobileApp/www/ & cd ../Cordova/CordovaMobileApp & cordova run android & cd ../../NxAngularMVI
Run Code Online (Sandbox Code Playgroud)

但是现在我需要使用 Cordova 插件,为此我需要检测deviceready事件。

在我的 index.html 头中,我已经包含了:

  <script type=”text/javascript” src=”cordova.js”></script>
Run Code Online (Sandbox Code Playgroud)

在我的 main.ts 文件中,我试图等待事件发生来引导我的应用程序。

const onDeviceReady = () => {
   console.log('Bootstrap ON!');
   platformBrowserDynamic().bootstrapModule(AppModule).catch(err => 
         console.log(err));
};

document.addEventListener('deviceready', onDeviceReady, false);
Run Code Online (Sandbox Code Playgroud)

应用程序永远不会初始化,因为 deviceready 事件永远不会被触发。我尝试了几种在这种引导方法的堆栈溢出中发现的变体,但无济于事。我尝试重新安装从框架到平台再到插件的每个cordova 部分,但没有任何帮助。我已经在 Galaxy S9 和摩托罗拉 G5 上对其进行了测试。

由于 Cordova API 提供的这个功能对于我的项目来说是必须的,我需要你们的帮助。谢谢 !

Ser*_*udo 5

正如在此线程中已经回答的那样有没有办法在 Google Play 上提交 reactjs PWA?,您可以在 Chrome 控制台中调试您的cordova 应用程序,请按照以下步骤操作

  1. 将您的设备与安装的应用程序连接起来(必须是 DEBUG 版本,而不是发行版)
  2. 打开 Chrome 控制台,在最后一个选项卡附近,您应该会看到一个三个垂直的点图标,单击它并选择“更多工具”,然后选择“远程设备”,您应该会看到已连接的设备。选择它
  3. 在列表中找到您的应用程序并单击“检查”按钮,此时您应该也在 Chrome 浏览器中打开您的应用程序。

由于应用程序无法启动,您可以检查 Chrome 控制台是否有错误,让我们知道

干杯

  • 我知道这听起来很愚蠢,你能不能尝试从你编译的 index.html 中删除cordova s​​cript 标签并手工重写它,我告诉你这是因为我有一个类似的问题,最终它是一个引号问题(双引号不是双引号)所以cordova.js 从未被加载。 (3认同)