ngCordova notificationReceived 事件未触发

ngCordova notificationReceived event not fired

我正在 ionic (angular + cordova) 上开发应用程序,为了访问 cordova 插件,我使用 ngCordova(angular 的 cordova 插件实现)。 android.

中的 $cordovaPush plugin 有问题

我在 GCM 中通过 senderID 成功注册了一个用户:

$cordovaPush.register({
    senderID: MY_SENDER_ID
});

我从 $cordovaPush:notificationReceived 事件中得到 regid

$rootScope.$on('$cordovaPush:notificationReceived', function(event, notification){
    if(notification.event === 'registered'){
         if(notification.regid.length > 0) {
             ServerCommunicatorService.makeRequest('POST', 'auth/update-gcm-id', {gcm_id: notification.regid});
         }
     }
});

然后我有一个这样的监听器,可以在前台显示通知并在控制器中执行一些操作:

$rootScope.$on('$cordovaPush:notificationReceived', function(event, notification){
    if(notification.event === 'message'){
        $cordovaToast.show(notification.message, 'long', 'center');
        $rootScope.$broadcast('notificationReceived', notification);
    }
});

最后是问题:成功注册后,当我从服务器发送通知时,我收到了通知(我在前台)。如果我通过点击设备上的“主页”按钮使应用程序后台运行,我会收到一条状态栏通知。从状态中选择该通知将我的应用程序带到最前面,我在事件处理程序中收到通知。现在一切都很好。但!当我完全退出应用程序并从服务器发送通知时,我会在状态栏中看到它。我单击它,我的应用程序重新启动,此后我在状态栏中收到所有通知,但无法在侦听器中收到它们。

文档中说:

最后,如果您通过点击主页上的后退按钮完全退出应用程序,您可能仍会收到通知。在通知托盘中触摸该通知将重新启动您的应用程序并允许您处理该通知 (COLDSTART)。在这种情况下,将在传入事件上设置冷启动标志。

可能是什么问题?提前致谢!!

好的解决方案是每次启动应用程序时都进行注册(即使在触摸通知托盘中的通知之后)。