Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用云功能向所有Android设备发送FCM_Javascript_Firebase_Firebase Cloud Messaging_Google Cloud Functions - Fatal编程技术网

Javascript 使用云功能向所有Android设备发送FCM

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:

只是想了解使用云功能发送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);
  });
尽管使用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()
只需指出,您不必等待主题出现在通知控制台中。只要主题已经订阅了令牌,就可以立即使用它。:)