$ionicPlatform.ready在部署到真实设备时未启动



我遇到了这个奇怪的问题,我正在使用ionic框架开发一个android应用程序,并使用cordova插件访问本地android功能。当$ionicPlatform.ready事件被触发时,应该调用cordova文档中建议的那些插件,所以我将我的代码包含在中

$ionicPlatform.ready(function(){
// some cordova plugin code e.g $cordovaVibration.vibrate([100]);
})

每当我使用以下命令在真实设备上测试我的应用程序时,就会出现奇怪的行为:

$ ionic run android -c -l 

所有功能都能完美工作,没有任何错误。现在,当我构建并签署我的应用程序时,然后将其部署到相同的真实设备

$ionicPlatform.ready(function(){
//some code
})

在angular.module(…(.run(…({…}内只执行一次只有在我锁定屏幕然后解锁之后。然后内的所有代码

$ionicPlatform.ready(function(){
//some code
})

不会起作用。这是app.js:中的代码

angular.module('conFusion', ['ionic', 'ngCordova', 'app.controllers','app.services'])
.run(function($ionicPlatform, $rootScope, $ionicLoading, $cordovaSplashscreen, $timeout) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
    $timeout(function() {
      $cordovaSplashscreen.hide();
    }, 3000);
  });
// the rest of code goes here

您可以看到$cordovaSplashscreen.hide((;除非激发$ionicPlatform.ready,否则无法执行。问题是,只有当我锁定屏幕然后解锁它时,启动屏幕才会被隐藏,但属于其他插件的代码永远不会被执行。

更新

将监听器形式$ionicPlatform.ready更改为

    document.addEventListener("deviceready", onDeviceReady, false);
      function onDeviceReady(){ .... }

没有用。

使用测试应用程序时

$ cordova run android

$ ionic run android

监听器函数中包含的代码将不会执行。但当使用命令测试应用程序时:

$ ionic run android -c -l

该应用程序完美运行

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
   $cordovaSplashscreen.hide();
}

请尝试在$ionicPlatform.ready函数中使用此事件侦听器。也许这会对你有所帮助(y(:(

经过大量检查,我终于能够确定原因并修复它。

问题出在这个cordova插件上:

https://github.com/katzer/cordova-plugin-local-notifications.git

我刚把它取下来,瞧!!!一切正常,不再有奇怪的行为。

我发现的一个有用的工具是这个chrome插件https://chrome.google.com/webstore/detail/adb/dpngiggdglpdnjdoaefidgiigpemgage它允许使用console.log((进行远程调试;Ionic应用程序中的说明。

相关内容

最新更新