gpt4 book ai didi

javascript - ngCordova notificationReceived 事件未触发

转载 作者:行者123 更新时间:2023-11-30 02:07:38 26 4
gpt4 key购买 nike

我正在 ionic(angular + cordova)上开发应用程序,为了访问我使用 ngCordova 的 cordova 插件(angular 的 cordova 插件实现)。我有一个 $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});
}
}
});

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

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

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

在文档中说:

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

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

最佳答案

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

关于javascript - ngCordova notificationReceived 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com