Ionic v1本地通知触发状态

时间:2017-12-22 12:07:11

标签: angularjs cordova ngcordova ionic-v1

$rootScope.$on('$cordovaLocalNotification:trigger', function(event, notification, state) {
    //code
});

我已尝试过上面的代码,但它仅适用于应用程序已在通知时打开的情况。我想计算在未打开应用程序时触发的所有通知。 有什么办法吗?

2 个答案:

答案 0 :(得分:0)

  1. 当应用程序关闭时(不仅仅是放入android的后台)和
  2. 触发或显示通知,然后
  3. 无法运行应用代码以使计数器保持最新状态存储在localStorageSqlite-DB中(例如)。

    这是增加计数器以满足您的请求的唯一方法:

      

    我想计算在应用未打开时触发的所有通知

    你必须使用:

    $rootScope.$on('$cordovaLocalNotification:click', function(event, notification, state) {
        // increase counter in your localStorage or Sqlite-DB here
    });
    

    因为这个doc状态:

      

    如果应用程序未运行,也会在deviceready之后调用click事件。

    点击通知时,无论您的应用是否开启,都会始终调用点击事件。

    如果您只想计算点击的通知

    • 当您的应用未开启或
    • 您的应用已启动,但用户不在您的应用中(与iOS相关,因为应用代码在后台投放或关闭时无法运行。)

    那么你可以这样做:

    $ionicPlatform.ready(function() {
    // ....
        $rootScope.$on('$cordovaLocalNotification:click', function(event, notification, state) {
            if(state === "background"){
               console.log("increase counter");
            }
        });
        // or if the first does not fire like with me, then use this instead:
        cordova.plugins.notification.local.on('click', function (notification, state) {
            if(state === "background"){
               console.log("increase counter");
            }
        });
    // ....
    });
    

    希望这也有帮助。

答案 1 :(得分:0)

我已经通过这种方式找到了解决方案,我在本地存储空间中发布了这些通知,在设备就绪时我将当前时间与预定时间进行比较,并计算所有已触发的通知和那不是。