gpt4 book ai didi

javascript - Firebase 云触发器功能 - 如何向所有用户发送通知?

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:09 24 4
gpt4 key购买 nike

我对 Firebase Cloud Functions 完全陌生(接触了 2 天)。当 Firebase 数据库检测到已添加新数据时,我尝试向我的应用程序的所有用户发送通知。这是我到目前为止所拥有的:

exports.sendNotification = functions.database.ref("/uploads/{pushId}").onCreate(event => {

const snapshot = event.data;
var str = snapshot.child("name").val();
console.log(str);

if (snapshot.previous.val()) {
return 0;
}

if (snapshot.val().name != "ADMIN") {
return 0;
}

const text = snapshot.val().text;
const payload = {
notification: {
title: snapshot.name,
body: ""
}
}
//return admin.messaging().sendToDevice(tokens, payload);
});

我知道代码现在处于困惑状态,这是由于来自各个教程站点的一些复制和测试造成的。我可以成功从 console.log 获取数据名称,但无法向所有用户发送通知。

我知道大多数人都使用 token 和设备 ID。但是有没有更简单的方法可以发送给我的每一位用户呢?我是否需要为我的应用程序添加任何 Java 代码才能使此通知正常工作?

编辑1:根据Peter的建议,我更新了我的功能:

exports.sendNotification = functions.database.ref("/uploads/{pushId}").onCreate(event => {

const snapshot = event.data;
var str = snapshot.child("name").val();
console.log(str);

if (snapshot.previous.val()) {
console.log("RETURN 1");
return 0;
}

const payload = {
notification: {
title: str,
body: ""
}
}

return admin.messaging().sendToTopic("Users", payload)
.then(function(response){
console.log("Notification sent ", response);
})
.catch(function(error){
console.log("Error sending notification: ", error);
});
});

我还在我的代码中添加了以下java:

FirebaseMessaging.getInstance().subscribeToTopic("Users");

我现在遇到的问题是,在 Firebase 控制台上它显示通知已成功发送,但在我的手机上我没有收到任何信息。在我的例子中是否必须使用 onMessageReceived 方法?

我注意到的一件事是,每次应用程序启动时都会调用上述语句。这会对结果产生任何影响吗?

最佳答案

我认为最简单的是主题,您可以将所有用户订阅到一个主题,然后向该主题发送通知。您必须将返回声明更改为:

return admin.messaging().sendToTopic("Cat", payload);

现在所有订阅主题“Cat”的用户都会收到通知。当然,您也可以将主题更改为您想要的任何内容..

要为用户订阅某个主题,您所需要做的就是编写以下内容:

FirebaseMessaging.getInstance().subscribeToTopic("Cat"); //in java code

查看此了解更多信息 topic messaging

关于javascript - Firebase 云触发器功能 - 如何向所有用户发送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com