应用程序完全关闭时不出现 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)的主要内容,如果未能解决你的问题,请参考以下文章

在关闭的应用程序上未收到推送通知

当应用程序完全关闭时,推送通知点击上的推送 ViewController 将不起作用

使用 GCM 关闭应用程序时在 iOS 中接收推送通知

关闭 Android 推送通知

Android消息推送能推送图片吗?还是只能推送文字信息?

IBM Worklight 5.0.6.1 - 关闭电话/应用程序时未收到推送通知