Firebase Messaging: отправьте сообщение с данными всем пользователям приложения с помощью облачной функции - PullRequest
1 голос
/ 15 апреля 2020

Как я могу подойти к обмену сообщениями всех пользователей приложения? В Интернете GUI можно отправлять уведомления всем пользователям приложения, поэтому я предполагаю, что делать то же самое с функцией и сообщением с данными (или, по крайней мере, с уведомлением) тоже можно с помощью функции - но я не смог найти способ сделать это.

Моя попытка

Я попытался подписать все устройства на topi c, позвонив по номеру:

FirebaseMessaging.getInstance().subscribeToTopic("all");

В случае onCreate моего FirebaseMessagingService, затем отправка сообщения с облачной функцией:

exports.sendMessage = functions.database.ref("/messages/{meta}")
    .onCreate((snapshot, context) => {
        const message = snapshot._data;
        console.log("msg", message["title"]);
        // logs the correct data, therefore the event triggers
        const payload = {
            data: {
                title: message["title"]
                /* blah blah */
            },

            topic: "all"
        }

        admin.database().ref("/messages/" + context.params.meta).remove()
        return admin.messaging().send(payload)
    })

Но onMessageReceived не срабатывает (в отличие от того, когда я отправляю уведомление с использованием GUI). Является ли этот подход жизнеспособным в любом случае? Чего мне не хватает?

1 Ответ

0 голосов
/ 15 апреля 2020

Я верю, что единственная часть, которую вам нужно изменить, это конец. Вам не понадобится эта часть здесь admin.database().ref("/messages/" + context.params.meta).remove().

Для обмена сообщениями ваш код должен выглядеть примерно так, как показано в следующем примере:

// Send a message to devices subscribed to the provided topic.
admin.messaging().send(payload)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

Вам необходимо использовать уловку для управления ошибка - так вы сможете визуализировать, что может быть причиной вашей проблемы. Вы можете найти больше информации в этой документации здесь: Отправлять сообщения в темы .

Кроме того, я нашел этот хороший репозиторий - к которому вы можете получить доступ здесь - с некоторыми примеры и другие примеры кода о том, как использовать облачные функции с FCM.

Дайте мне знать, помогла ли вам эта информация!

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