Angular混合应用未触发deviceready事件

时间:2019-01-11 15:06:52

标签: android angular cordova angular6 cordova-plugins

我正在构建将要用Cordova 8.1.2包装的全平台Angular 6 APP。不幸的是,我无法启动 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文件中,我试图等待事件发生以引导我的应用程序。

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

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

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

由于Cordova API提供的此功能对于我的项目是必不可少的,因此需要您的帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

正如在该线程Is there a way to submit a reactjs PWA on Google Play?中所回答的那样,您可以在Chrome控制台中调试cordova应用程序,请按照以下步骤操作

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

由于该应用程序无法启动,因此您可以检查Chrome控制台中的错误, 让我们知道

欢呼

答案 1 :(得分:0)

我遇到了同样的问题。

我的解决方案: 将<script type=”text/javascript” src=”cordova.js”></script>内的<body>移动到<app-root>的旁边。当我将<head>设备中的脚本标签准备就绪时,永远不会触发。

我通过查看使用cordova cli生成的示例项目来弄清楚这一点。如果查看它们的index.html,它们的主体中将包含script标记。