我正在使用https://github.com/ToothlessGear/node-gcm使用GCM向Chrome打包的应用发送消息。
如果Chrome应用正在运行,一切正常
当我关闭Chrome应用程序时发送消息时,启动应用程序后不会传递这些消息。我确实在服务器的结果中得到了message_id。
我也尝试过使用命令行,在命令行中也面临同样的问题。
服务器端的代码(nodejs)
var GCM = require('node-gcm');
var gcmSender = new GCM.Sender(apiKey);
var sendGCMMessage = function(data, regIds, collapseKey, callback) {
var message = new GCM.Message({
priority: 'high',
collapseKey: collapseKey,
data: data
});
gcmSender.send(message, regIds,
function(err, result) {
callback(err, result)
})
}
打包应用:
//register
var senderIds = [senderId];
chrome.gcm.register(senderIds, function(registrationId) {
sendRegistrationIdToServer(registrationId, function(succeed) {
});
});
//listen to incoming messages
chrome.gcm.onMessage.addListener(function(message) {
console.log("gcm message")
});
答案 0 :(得分:0)
问题在于我假设铬的行为方式。
在chrome中,如果chrome正在运行(并且app已关闭),则会传递GCM消息。鉴于注册发生在background.js中,chrome唤醒应用程序并运行onMessage侦听器。否则消息将被丢弃。
就我而言,我没有在backgroud.js中进行注册。将我的注册移至backgroud.js,现在工作正常