如何向应用程序的所有用户发送消息
使用web GUI,可以向应用程序的所有用户发送通知消息,所以我认为对某个功能和数据消息(或至少对通知消息(也可以对某个函数执行同样的操作,但我找不到方法。
我的尝试
我试着通过调用为所有设备订阅一个主题
FirebaseMessaging.getInstance().subscribeToTopic("all");
在我的FirebaseMessagingService
的onCreate
事件中,然后发送一条带有云功能的消息:
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发送通知消息那样(
这种方法在任何方面都可行吗?我错过了什么?
我相信您唯一需要更改的部分就是结尾。这里不需要这个部件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);
});
你需要使用一个catch来管理错误——这样你就可以可视化可能导致你的问题的原因。您可以在此文档中找到更多信息:向主题发送消息。
除此之外,我发现了这个不错的存储库,你可以在这里访问它,其中有一些示例和更多的代码示例,介绍如何将云函数与FCM一起使用。
如果这些信息对你有帮助,请告诉我!