Javascript 使用云功能向所有Android设备发送FCM
只是想了解使用云功能发送Firebase云消息以通知手机上安装了我的应用程序的所有用户的过程。每当在特定分支上添加了新事件时,就会触发此操作,如下所示:Javascript 使用云功能向所有Android设备发送FCM,javascript,firebase,firebase-cloud-messaging,google-cloud-functions,Javascript,Firebase,Firebase Cloud Messaging,Google Cloud Functions,只是想了解使用云功能发送Firebase云消息以通知手机上安装了我的应用程序的所有用户的过程。每当在特定分支上添加了新事件时,就会触发此操作,如下所示: var functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); const payload = { notification:
var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const payload = {
notification: {
title: 'New event added'
}
};
exports.bookingsChanged = functions.database.ref("/Events")
.onWrite(event => {
return admin.messaging().sendToDeviceGroup("latest_events", payload);
});
尽管使用Firebase控制台选项设置和测试FCM以发送消息,但我上传的上述功能似乎根本无法将消息发送到我正在使用的Android设备。我注意到目前几乎没有这方面的文档,因此非常感谢您的帮助
编辑
我可能没有注意到这一点,但我已将字符串“latest_events”替换为我的Android应用程序包名称,我认为这是必需的,因为控制台以“用户段”为目标。最终解决了这一问题,等待我设置的主题出现在Firebase通知仪表板中。然后,我将以下代码更改为直接发送到此主题:
return admin.messaging().sendToTopic("latest_events", payload);
在看到API文档后,我还发现在使用“sendToDevicegroup”时必须提供一个令牌。因此,在我的用例中,主题更有效,因为我不希望获得要发送到特定用户设备的令牌
希望这对遇到类似问题的人有所帮助
附加编辑
如果像我一样,您只想提醒用户已添加到特定分支的新事件,通常包括推送id,我创建了以下代码来实现这一点
在文档中的示例的帮助下,这将评估该位置与前一位置相比的记录数。因此,这只会提醒用户添加了新的子记录,而不是每次编辑和删除记录时
var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.bookingsChanged = functions.database.ref("/Bookings").onWrite(event
=> {
var payload = {
notification: {
title: "A new event has been added!"
}
};
if (event.data.previous.exists()) {
if (event.data.previous.numChildren() < event.data.numChildren()) {
return admin.messaging().sendToTopic("latest_events", payload);
} else {
return;
}
}
if (!event.data.exists()) {
return;
}
return admin.messaging().sendToTopic("latest_events", payload);
});
var functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.bookingsChanged=functions.database.ref(“/Bookings”).onWrite(事件
=> {
var有效载荷={
通知:{
标题:“已添加新事件!”
}
};
if(event.data.previous.exists()){
if(event.data.previous.numChildren()
只需指出,您不必等待主题出现在通知控制台中。只要主题已经订阅了令牌,就可以立即使用它。:)