我正在使用node-gcm模块向我的Cordova应用程序发送推送通知。
服务器报告它已成功地将消息传递到我的设备。
如果应用程序在后台运行,通知会出现在设备上,但如果应用程序根本没有运行,则不会出现。
从我的阅读,我相信我需要设置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);
}
});
为什么当应用程序完全关闭时,我的通知不会出现在设备上?
在这个线程中声明,用户强制停止应用程序会使应用程序处于停止状态,并且它的任何代码都不会运行,包括manifest中声明的任何广播接收器。只有当用户显式地启动应用程序时,它才会被置于接收器被触发的状态。
您也可以在本文档中看到delay_while_idle
的值必须设置为true
。如果设备连接但空闲,消息仍将立即传递,除非delay_while_idle
标志设置为true。
这里有一个相关的线程可能会有所帮助:
- app被杀死时未收到推送