如何在Node.js中使用Firebase向超过10000个用户发送推送通知?

时间:2018-10-18 11:14:18

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

如果我有超过1万名用户,并且我有一个令牌数组,如何发送给所有用户?我尝试每次对数组1000个用户进行分块,将1000个用户推送到一个主题,然后将该用户从一个主题中删除(循环)。但这是错误的。有人遇到这种情况吗?谢谢! 示例代码:

let registrationTokens =[
token1,
token2,...
token10000
]
let promises = [];

for (let i = 0; i < 10; i++) {
    promises.push(
        admin
            .messaging()
            .subscribeToTopic(registrationTokens, topic) // subscrible topic 
            .then(function(response) {
                // send message to topic
                admin
                    .messaging()
                    .send(message)
                    .then(response => {
                        // remove user from topic 
                        admin
                            .messaging()
                            .unsubscribeFromTopic(registrationTokens, topic);
                    })
                    .catch(error => {
                        console.log('Error sending message:', error);
                    });
            })
            .catch(function(error) {
                console.log('Error subscribing to topic:', error);
                console.log(error);
                return res.send(error);
            })
    );
}

Promise.all(promises);

2 个答案:

答案 0 :(得分:0)

主题适用于您的用户订阅以接收有关特定主题的消息的用例。您在这里所拥有的内容似乎不太适合使用主题。

因为您已经具有要将消息发送到的实例的设备令牌,

  1. 您可以调用API send a message to a specific device 10.000次。
  2. 或者,您可以使用registration_ids参数一次将legacy HTTP API to send downstream messaging用于1000个设备。

答案 1 :(得分:0)

您可以使用Firebase Admin SDK程序包检查firebase docucumentation上的“ sendMulticast”将推送通知发送到最多包含500个注册令牌的列表。