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

deviceready Event not fired in an Angular hybrid app

我正在构建一个全平台 Angular 6 应用程序,它将与 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

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

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

  <script type=”text/javascript” src=”cordova.js”></script>

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

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

document.addEventListener('deviceready', onDeviceReady, false);

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

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

正如本帖 中已回答的那样,您可以在 Chrome 控制台中调试您的 cordova 应用程序,请按照以下步骤操作

  1. 将您的设备连接到已安装的应用程序(必须是 DEBUG 版本,不是发行版)
  2. 打开 Chrome 控制台,在最后一个选项卡附近您应该会看到一个三 垂直点图标,单击它和 select 'more tools',然后单击“远程” devices',您应该会看到已连接的设备已列出。 Select它
  3. 在列表中找到您的应用程序并单击 'inspect' 按钮,位于 此时您应该也在 Chrome 浏览器中打开您的应用程序。

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

干杯

我 运行 遇到了这个完全相同的问题。

我的解决方法: 将 <script type=”text/javascript” src=”cordova.js”></script> 移到 <body><app-root> 旁边。当我在 <head> deviceready 中有脚本标签时,永远不会触发。

我通过查看使用 cordova cli 生成的示例项目弄清楚了这一点。如果您查看他们的 index.html,他们在正文中有脚本标记。