如何在NodeJs中使用android推送通知发送Json对象

我正在使用下面的代码发送推送通知,它正常工作正常string的消息,如果我插入消息到JSON它不工作?

var GCM = require('gcm').GCM; var gcm = new GCM('MyApi'); var message = { registration_id: ['x'], collapse_key: 'New shop created - duty paid shop', // normal string is working // collapse_key: {'message':'new shop created','shopname':'shopname'}, this JSON dosen't works ? priority: 'high', contentAvailable: true, delayWhileIdle: true, timeToLive: 3, }; gcm.send(message, function(err, messageId){ if (err) { console.log(err); } else { console.log("Sent with message ID: ", messageId); } }); 

而使用JSON的错误就像“Missing Collapse_Key”

尝试这个 :

 var GCM = require('gcm').GCM; var gcm = new GCM('MyApi'); var message = { registration_id: ['x'], //collapse_key: 'New shop created - duty paid shop', // normal string is working collapse_key: '{\'message\':\'new shop created\',\'shopname\':\'shopname\'}', priority: 'high', contentAvailable: true, delayWhileIdle: true, timeToLive: 3, }; gcm.send(message, function(err, messageId){ if (err) { console.log(err); } else { console.log("Sent with message ID: ", messageId); } }); 

collapse_key只能是一个不是json的string

在这里查看文档https://developers.google.com/cloud-messaging/http-server-ref#downstream-http-messages-json

你可以发送数据(有效载荷)json作为

 var GCM = require('gcm').GCM; var gcm = new GCM('MyApi'); var message = { registration_id: ['x'], collapse_key: 'New shop created - duty paid shop', priority: 'high', notification: {title: "hello", message: "hello world"}, // for recieving notification on app side plus you need write separate notification handling function on app //A contentAvailable: true, delayWhileIdle: true, timeToLive: 3, data: {'message':'new shop created','shopname':'shopname'} }; gcm.send(message, function(err, messageId){ if (err) { console.log(err); } else { console.log("Sent with message ID: ", messageId); } }); 

我们可以用“node-gcm”模块发送json数据

 var gcm = require('node-gcm'); var apiKey = 'ApiKey'; var message = new gcm.Message({ collapseKey: 'demo', priority: 'normal', contentAvailable: true, delayWhileIdle: true, timeToLive: 3, data:{"message":"New Shop Created","shopName":"XYZ"} }); var sender = new gcm.Sender(apiKey); sender.send(message, { registrationTokens: 'id'}, function (err, response) { if (err){ console.error(err); } else { console.log(response); } });