应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)
Posted
技术标签:
【中文标题】应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)【英文标题】:Android Push Notifications not appearing when app is fully closed (using node-gcm) 【发布时间】:2016-11-08 03:06:03 【问题描述】:我正在使用 node-gcm 模块将推送通知发送到我的 Cordova 应用程序。 服务器报告它已成功将消息传递到我的设备。
通知如果应用程序在后台运行,通知会出现在设备上,但如果应用程序根本没有运行,则不会出现。
来自my reading 我相信我需要设置priority: 'high'
来解决这个问题,但是从我的测试来看这不起作用。要么我设置不正确,要么我需要做其他事情。
这是我的发送代码:
var msgJson =
priority: 'high',
contentAvailable: true,
"data":
title: title,
body: message_text,
icon: 'ic_launcher',
sound: true,
extra_data
;
var message = new gcm.Message( msgJson );
console.log(message);
sender.send(message, registrationTokens: push_tokens , function (err, response)
if(err)
console.error('Error sending Google Cloud Message notification:', err, response);
else
console.log('android notification successful send to', push_tokens, response);
);
为什么当应用程序完全关闭时我的通知没有出现在设备上?
【问题讨论】:
【参考方案1】:在thread 中声明,用户强制停止应用程序会使应用程序处于停止状态,并且不会运行任何代码,包括清单中声明的任何广播接收器。只有当用户显式启动应用程序时,才会将其置于接收器被触发的状态。
您还可以在此documentation 中看到delay_while_idle
的值必须设置为true
。如果设备已连接但处于空闲状态,消息仍将立即传递,除非 delay_while_idle
标志设置为 true。
这是一个可能有帮助的相关主题:
Push not received when app is killed【讨论】:
在发布答案之前,我自己做了一些研究,我遇到了相同的信息,如果应用程序完全关闭,广播不会到达 - 但我简直不敢相信,一些应用程序(如 gmail)可以管理它。我也尝试了 delay_while_idle 标志,但我相信这是为了网络连接,所以我把它排除在我尝试过的答案之外。感谢您的研究和您留下的答案——我真的希望能从真正遇到并解决了同样问题的人那里得到答案。 我遇到了一些我认为可能要走的路,我接下来会尝试,但它需要修改我的客户端代码,所以我把它推迟到最后:***.com/a/24314088/1290746 (***.com/questions/24313539/…) 再次感谢您的回答,我希望我的回答听起来没有忘恩负义 - 我在这方面花了很长时间,运气不佳,没有成功,我感到非常疲倦和悲伤。以上是关于应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)的主要内容,如果未能解决你的问题,请参考以下文章