2016-04-11 4 views
1

Ich verwende den folgenden Code, um Push-Benachrichtigung zu senden, und es funktioniert gut mit Nachricht als eine normale Zeichenfolge, wenn ich die Nachricht in JSON fügt es funktioniert nicht?Wie JSON-Objekt mit Android Push-Benachrichtigung in NodeJs senden

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

während der JSON mit den Fehlern wie "Missing Collapse_Key"

Antwort

4

Try this:

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

collapse_key kann nur ein String nicht

prüft JSon sein Dokumentation hier https://developers.google.com/cloud-messaging/http-server-ref#downstream-http-messages-json

Sie können json in Daten (Payload) als

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

ja Ihr Punkt ist absolut richtig, aber wenn ich senden kann Sende Nachricht mit Daten als JSON, ist es beim Empfangen leer? – karthik

+0

Um Benachrichtigungen über die App zu erhalten, müssen Sie den Benachrichtigungsschlüssel in der Nachricht hinzufügen –

0

wir json Daten mit "node-gcm" Modul

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