我完全是Firebase云函数的新手(仅有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方法?
我注意到的一件事是,上述语句每次应用程序启动时都会被调用。这对结果有影响吗?