Как отправить push-уведомление более чем 10000 пользователям, использующим firebase в nodejs? - PullRequest
0 голосов
/ 18 октября 2018

Если у меня более 10 тысяч пользователей, и у меня есть массив токенов, как я могу отправить их всем пользователям?Я каждый раз пытался разделить массив на 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);

1 Ответ

0 голосов
/ 18 октября 2018

Темы предназначены для случая использования, когда ваш пользователь подписывается на получение сообщений по определенной ... теме.То, что у вас есть здесь, не похоже на хорошее использование тем.

Поскольку у вас уже есть токены устройства экземпляра, который вы хотите отправить сообщение:

  1. Вы можете позвонитьAPI для отправки сообщения на определенное устройство 10.000 раз.
  2. В качестве альтернативы, вы можете использовать устаревший HTTP-API для отправки нисходящих сообщений на 1000 устройств одновременно, используя параметр registration_ids.
...