尝试了解使用云功能发送Firebase云消息的过程,以通知在手机上安装了我的应用的所有用户。只要在特定分支上添加了新事件,就会触发,如下所示:
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);
});
我上传的上述功能似乎并未将消息发送到我正在使用的Android设备,尽管使用Firebase控制台选项设置和测试FCM来发送消息。我注意到目前这方面的文档很少,所以非常感谢任何帮助!
修改
我可能已经错过了这个,但我已经用我认为必需的Android应用程序包名称替换了字符串' latest_events ',根据控制台定位'用户细分'
答案 0 :(得分:1)
等待我设置的主题出现在Firebase Notifications信息中心中,以解决此问题。然后我更改了以下代码以直接发送到此主题:
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);
});