我做了一些搜索,无法找到这个问题的答案,对不起,如果它重复了。
我使用Node.JS向Android设备发送GCM通知。我在一个数组中传递注册ID列表,然后通过Sender.send函数发送它。我想知道,每个发送请求允许的ID数量是否有最大限制?在发送功能中每次通话1000次,还是没有这样的限制?
我记得读过有关使用JSON格式一次发送多达1000个ID的信息,这是否适用于Node.JS中的node-gcm模块?
提前致谢。
答案 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);
}
});