Ionic v1本地通知触发状态

问题描述 投票:1回答:2
$rootScope.$on('$cordovaLocalNotification:trigger', function(event, notification, state) {
    //code
});

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

angularjs cordova ngcordova ionic-v1
2个回答
0
投票
  1. 当一个应用程序关闭时(不仅仅是放入android的后台)和
  2. 然后触发或显示通知

应用程序代码无法运行以保持最新存储在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");
        }
    });
// ....
});

希望这也有帮助。


0
投票

我已经通过这种方式找到了一个解决方案,我在本地存储中发布了这些通知,在设备就绪时我将当前时间与预定时间进行比较,并计算所有已触发的通知,但事实并非如此。

© www.soinside.com 2019 - 2024. All rights reserved.