我正在使用 Cloud Functions for Firebase 向用户发送通知。我能够收到通知,但问题是每个人都收到通知,我正在尝试将通知发送给特定用户。我将用户的设备 ID 保存在 Firebase 的数据库中,然后向该特定人员发送通知。这是我的代码:
为了保存用户的数据,这实际上工作正常:
DatabaseReference root = FirebaseDatabase.getInstance().getReference();
DatabaseReference groupsRef = root.child("users").child(Settings.Secure
.getString(ctx.getContentResolver(), Settings.Secure.ANDROID_ID));
groupsRef.child("isLogin").setValue(2);
在订阅主题的第一个事件中:
FirebaseMessaging.getInstance().subscribeToTopic("android");
最后是 javascript 代码(我对此知之甚少):
var functions = require('firebase-functions');
var admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification = functions.database.ref('/users')
.onWrite(event => {
var eventSnapshot = event.data;
var str = "This is notification"
console.log(str);
var topic = "android";
var payload = {
data: {
isLogin: eventSnapshot.child("975af90b767584c5").child("isLogin").val()
}
};
return admin.messaging().sendToTopic(topic, payload)
.then(function (response) {
// See the MessagingTopicResponse reference documentation for the
// contents of response.
console.log("Successfully sent message:", response);
})
.catch(function (error) {
console.log("Error sending message:", error);
});
});
这里我想发送设备 ID,而不是现在硬编码的“975af90b767584c5”,我不知道如何在 javascript 中执行此操作。或者有没有其他办法。
感谢任何帮助,谢谢。
最佳答案
首先在app中,获取用户FCM token
String Token = FirebaseInstanceId.getInstance().getToken();
现在,将此 token 发送到您的服务器并将其与其他用户详细信息一起保存在数据库中。
然后,当您想要向特定用途发送通知时,通过用户 ID 或其他方式从数据库中获取该用户的 FCM token 。如果您想向多个用户发送通知,则从数据库中获取多个用户 FCM token 并将其放入 arrayList .
现在是主要部分,使用您的 KEY 调用 fcm 端点,通知内容 最重要的是: token 或 token 数组。
在你的情况下,不要使用 sendToTopic,使用发送到:Token/Array
您可以通过谷歌搜索 java 脚本语法,但这是主要逻辑。有关更多信息: https://firebase.google.com/docs/cloud-messaging/admin/send-messages
关于javascript - 使用 Cloud Functions for Firebase 向特定用户发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44242958/