如何在Node js中使用FCM向多个Android设备发送消息?

时间:2017-02-22 12:36:10

标签: node.js push-notification google-cloud-messaging firebase-cloud-messaging

我尝试向单个设备发送消息,即单个注册ID,但它工作正常但是当尝试添加多个注册ID时,它提供了“InvalidServerResponse”'错误。 例如适用于regTokens =' regId1&#39 ;; 但是不适用于regTokens = [' regId1',' regId2'];



var FCM = require('fcm-node');
// Add API Key
var fcm = new FCM('<server-key>');

exports.sendMessage = function (regTokens, messageToSend, callback) {
  var message = { //this may vary according to the message type (single recipient, multicast, topic, et cetera)
      to: regTokens,

      data: { 
        ar_message: messageToSend
      }
  };

    fcm.send(message, function(err, response){
        if (err) {
            console.log("Something has gone wrong!",err);
        } else {
            console.log("Successfully sent with response: ", response);
        }
        callback(err, 'Success');
      });
}
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:6)

更新:对于 v1 ,似乎不再支持registration_ids。强烈建议使用主题。

发送到指定的多个注册令牌时,您必须使用registration_ids而不是to。从文档(强调我的):

  

此参数指定多播消息的收件人,即发送到多个注册令牌的消息。

     

该值应为要向其发送多播消息的注册令牌数组。该数组必须包含至少1个且最多1000个注册令牌。要将消息发送到单个设备,请使用to参数。

     

只允许使用HTTP JSON格式组播消息。

var message = {
    registration_ids: regTokens,

   data: { 
        ar_message: messageToSend
   }
  };

答案 1 :(得分:1)

此线程的更新:使用admin.messaging.Messaging.sendToDevice()将消息发送到多个android设备。

https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendToDevice

  

messaging.sendToDevice(registrationTokens,有效负载,选项)

     
      
  • registrationTokens:字符串数组(收件人的令牌)

  •   
  • 有效载荷:消息有效载荷

  •   
  • 选项:(可选)admin.messaging.MessagingOptions

  •   

答案 2 :(得分:0)

var message = {
            // to : "token", //for single device
            registration_ids: ["token1", "token2"], // for Multiple device
            collapse_key: 'your_collapse_key',
            notification: notify,
            data: payload,
         };