0

我正在使用node-gcm模块向我的科尔多瓦应用程序发送推送通知。
服务器报告它已成功将消息传递到我的设备。当应用程序完全关闭时,Android推送通知不会显示(使用node-gcm)

如果应用程序在后台运行,则设备上会显示通知,但如果应用程序未运行,则不会出现

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); 
    } 

}); 

为什么我的通知,无法在设备上上来当应用程序完全关闭?

回答

0

在此thread中声明强制停止应用程序的用户将应用程序置于停止状态,并且其代码不会运行,包括在manifest中声明的任何广播接收器。只有在用户明确启动应用程序时,才会将其置于接收者被解雇的状态。

您还可以在此documentation中读取delay_while_idle的值必须设置为true。如果设备已连接但空闲,则消息仍将立即传送,除非delay_while_idle标志设置为true。

这里有一个相关的线程这可能有助于:

+0

我没有张贴一个答案前做的研究我公平一点,我曾经碰到过同样的信息广播不如果应用程序完全关闭,则会到达 - 但我无法相信,有些应用程序(如Gmail)可以管理它。我也尝试了delay_while_idle标志,但我认为这是一个网络连接的东西,所以我把它从我的答案中拿出来,我试过了。我很感谢你的研究,并留下了答案 - 我真的希望得到一个真正面临和解决同样问题的人的回答。 – kris

+0

我遇到了一些我认为可能要走的路,我将在下一次尝试,但它需要修改我的客户端代码,所以我会推迟到最后:http://stackoverflow.com/a/ 24314088/1290746(http://stackoverflow.com/questions/24313539/push-notifications-when-app-is-closed)再次 - 谢谢你的回答,我希望我的回复听起来不是忘恩负义 - 我花了很长一段时间在这个运气不好,没有成功,我感到非常疲惫和难过。 – kris