我是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成功获取数据的名称,但是无法将通知发送给所有用户。
我知道大多数使用令牌和设备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方法?
我注意到的一件事是,每次启动应用程序时都会调用上述声明。这会以任何方式影响结果吗?
我认为最简单的方法是topics
,您可以将所有用户都订阅到一个用户中topic
,然后向该主题发送通知。您必须将return语句更改为此:
return admin.messaging().sendToTopic("Cat", payload);
因此,现在所有订阅topic
“猫”的用户都将收到通知。当然,您也可以将主题更改为所需的任何内容。
要为用户订阅主题,您需要做的就是编写以下代码:
FirebaseMessaging.getInstance().subscribeToTopic("Cat"); //in java code
检查此以获得更多信息主题消息
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句