Node.js 如何在NodeJs中发送带有android推送通知的Json对象

Node.js 如何在NodeJs中发送带有android推送通知的Json对象,node.js,express,Node.js,Express,我正在使用下面的代码发送推送通知,它可以正常使用消息作为普通字符串,如果我将消息插入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 // c

我正在使用下面的代码发送推送通知,它可以正常使用消息作为普通字符串,如果我将消息插入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时,错误就像缺少折叠键一样尝试以下操作:

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);
}
});
试试这个:

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);
}
});
折叠密钥只能是字符串,不能是json

请在此处查看文档

您可以在datapayload中发送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);
    }
});
折叠密钥只能是字符串,不能是json

请在此处查看文档

您可以在datapayload中发送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);
    }
});

我们可以使用节点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);
        }
    });

我们可以使用节点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);
        }
    });

是的,您的观点绝对正确,但如果我以JSON格式发送消息,则在接收时该消息为空?为了在应用程序上接收通知,您需要在消息中添加通知键是的,您的观点绝对正确,但如果我以JSON格式发送消息,接收时为空?为了在应用程序上接收通知,您需要在消息中添加通知键