Node.js GCM推送通知允许的ID数量?

时间:2014-08-29 13:31:40

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

我做了一些搜索,无法找到这个问题的答案,对不起,如果它重复了。

我使用Node.JS向Android设备发送GCM通知。我在一个数组中传递注册ID列表,然后通过Sender.send函数发送它。我想知道,每个发送请求允许的ID数量是否有最大限制?在发送功能中每次通话1000次,还是没有这样的限制?

我记得读过有关使用JSON格式一次发送多达1000个ID的信息,这是否适用于Node.JS中的node-gcm模块?

提前致谢。

2 个答案:

答案 0 :(得分:2)

GCM服务器将接受最多1000个注册ID的请求。如果您的数量超过1000,则必须将它们拆分为多个请求。

因此,您的问题的答案取决于您所呼叫的代码是否为您分配。

答案 1 :(得分:0)

node-gcm不允许一次发送超过1,000个设备。

  

请注意,您最多一次只能向1000个注册ID发送通知。这是由于GCM API方面的限制。

https://github.com/ToothlessGear/node-gcm/issues/42

您可以轻松地将令牌拆分为以下批次:

// Max devices per request    
var batchLimit = 1000;

// Batches will be added to this array
var tokenBatches = [];

// Traverse tokens and split them up into batches of 1,000 devices each  
for (var start = 0; start < tokens.length; start += batchLimit) {
    // Get next 1,000 tokens
    var slicedTokens = tokens.slice(start, start + batchLimit);

    // Add to batches array
    tokenBatches.push(slicedTokens);
}

// You can now send a push to each batch of devices, in parallel, using the caolan/async library
async.each(batches, function (batch, callback) {
    // Assuming you already set up the sender and message
    sender.send(message, { registrationIds: batch }, function (err, result) {
        // Push failed?
        if (err) {
            // Stops executing other batches
            return callback(err);
        }

        // Done with batch
        callback();
    });
}, function (err) {
    // Log the error to console
    if (err) {
        console.log(err);
    }
});