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

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

4

2 回答 2

0

我以这种方式找到了一个解决方案,我将这些通知保存在我的本地存储中,在设备准备就绪时,我将当前时间与预定时间进行比较,并计算所有被触发的通知,而那些不是。

于 2017-12-24T13:55:36.353 回答
0
  1. 当应用程序关闭时(例如,不只是使用 android 进入后台)并且
  2. 触发或显示通知,然后

应用程序代码无法运行以使存储在localStorageSqlite-DB(例如)中的计数器保持最新。

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

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

你必须使用:

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

因为正如该文档所述:

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

无论您的应用程序是否打开,单击通知时始终会调用 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");
        }
    });
// ....
});

希望这也有帮助。

于 2017-12-23T13:14:19.170 回答