【问题标题】:Node.JS node-gcm-Service only sends to one deviceNode.JS node-gcm-Service 只发送到一台设备
【发布时间】:2014-10-10 20:55:18
【问题描述】:

我正在使用 node-gcm-service 包将消息从我的服务器发送到已注册的设备。当有一个设备时,消息传递成功,当有两个设备时,只有第一个设备(deviceIds[0])接收到消息。如果两个设备都是消息发送到的唯一设备,或者其中一个设备是 deviceIds 数组中的第一个设备,则这两个设备都会接收消息。任何想法可能会发生什么?下面是相关代码sn-p。

谢谢你, 加里

    function(cb) {
        var gcmSender = new gcm.Sender();
        gcmSender.setAPIKey("api-key");
        var gcmMessage = new gcm.Message({

            collapse_key: "floomit",

            data: {
                message:"new_photo",
                user:user,
                stream:streams[0].name
            },
            delay_while_idle:true,
            time_to_live:34,
            dry_run:false
        });

        gcmSender.sendMessage(
            gcmMessage.toString(),
            deviceIds,
            true,
            cb
        );
    }

【问题讨论】:

  • 您是否收到任何错误传递给您的回调?
  • 回调没有错误
  • 第二台设备最终确实在几个小时后收到了它的消息。 GCM 是否限制多播消息?

标签: node.js google-cloud-messaging


【解决方案1】:

试试这个 sn-p 希望它能解决你的问题... 我尝试使用以下代码,它适用于所有设备。

 var gcm = require('node-gcm-service');
function (cb){
var gcmSender = new gcm.Sender();
    gcmSender.setAPIKey("google_api_key");
    var gcmMessage = new gcm.Message({

        collapse_key: "floomit",

        data: {
            message:"new_photo",
            user:user,
            stream:streams[0].name
        },
        delay_while_idle:true,
        time_to_live:34,
        dry_run:false
    });

var registrationIds = [];
registrationIds.push('xxxxxxxxxx1');
registrationIds.push('xxxxxxxxxxx2');
console.info(registrationIds);  

for(var i=0;i<registrationIds.length;i++){


        gcmSender.sendMessage(gcmMessage.toString(), registrationIds[i], true, function(err, data) {
            if (!err) {
                // do something
               console.info("data",JSON.stringify(data));
            } else {
                // handle error
               console.info("error",JSON.stringify(err));
            }
        });

}

}

【讨论】:

  • GCM 规范明确规定您可以向其发送一组注册 ID,但 ID 限制为 1000 个。我不想把发送这些消息的负担放在我的服务器上:)
  • 如果您使用的是“node-gcm-service”模块,然后尝试使用上面的 sn-p 它直接发送消息没有任何问题..
【解决方案2】:

问题似乎与 GCM 服务本身有关。对于 2 台设备,第 2 台设备最终收到消息,不知道多少小时后。当我有3台设备时,其中2台马上收到通知,第3台30多分钟后还没有收到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2017-01-08
    • 2014-03-06
    相关资源
    最近更新 更多