Как я могу подойти к обмену сообщениями со всеми пользователями приложения?
С помощью веб-интерфейса можно отправить уведомление всем пользователям приложения, поэтому я предполагаю, что сделать то же самое с функцией, и сообщение с данными (или, по крайней мере, с уведомлением) возможно и с функцией, но я не мог найти способ сделать это.
Моя попытка
Я попробовал подписать все устройства на тему, позвонив:
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
не срабатывает (в отличие от того, когда я отправляю уведомление через графический интерфейс).
Жизнеспособен ли этот подход в любом случае? Что мне не хватает?
1 ответ
Я считаю, что единственное, что вам нужно будет изменить, - это конец. Здесь вам не понадобится эта деталь 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);
});
Вам нужно использовать уловку для управления ошибкой - так вы также сможете визуализировать, что может вызвать вашу проблему. Дополнительную информацию можно найти в этой документации здесь: Отправляйте сообщения в темы.
Кроме того, я нашел этот замечательный репозиторий, к которому вы можете получить доступ здесь a> - с некоторыми примерами и дополнительными примерами кода о том, как использовать облачные функции с FCM.
Дайте мне знать, помогла ли вам информация!
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .