如何在云功能内查询令牌并发送推送通知?



我目前非常困在push notifications

我设置一切正确,我知道如何通过云消息控制台发送推送通知。但我只需要将个性化的push notifications发送到特定的设备。

我从未使用过node.js我已经为此工作了整整一个星期了,但是没有任何结果。

我用这种方式保存deviceToken:

void notificationHandling() async {
final fbm = FirebaseMessaging();
fbm.requestNotificationPermissions();
fbm.configure(
onMessage: (message) {
print(message);
return;
},
onLaunch: (message) {
print(message);
return;
},
onResume: (message) {
print(message);
return;
},
);
fbm.getToken();
fbm.subscribeToTopic('deal');
String fbmToken = await fbm.getToken();
// Save it to Firestore
if (fbmToken != null) {
var tokens = FirebaseFirestore.instance
.collection('users')
.doc(uid)
.collection('tokens')
.doc(fbmToken);
await tokens.set({
'token': fbmToken,
'createdAt': FieldValue.serverTimestamp(), // optional
'platform': Platform.operatingSystem // optional
});
}
}

我在initState();中调用这个函数

Myindex.js文件如下:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const database = admin.firestore();
exports.sendNewMessageNotification = functions.firestore
.document("messages/{message}")
.onWrite((event) => {
const query = await database
.collection("users")
.doc(event.after.data().uid[0])
.collection("tokens")
.get();
const tokens = query.docs.map((snap) => snap.id);
return admin.messaging().send(tokens, {
notification: {
title: "Nieuw bericht",
body: "Je hebt een nieuw bericht van Quick Fix Repair",
click_action: "FLUTTER_NOTIFICATION_CLICK",
}});
});

现在有没有人知道我怎么能解决这个问题和发送thepush notifications到一个特定的设备令牌?我被卡住了。

提前感谢!

PS:我调用event.after.data().uid[0]是因为uid是一个包含UID的数组字符串,但我不确定如何将通知发送给每个人的UIDUID数组

试试这个;

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const database = admin.firestore();
exports.sendNewMessageNotification = functions.firestore
.document("messages/{message}")
.onWrite((event) => {
const query = await database
.collection("users")
.doc(event.after.data().uid[0])
.collection("tokens")
.get();
const tokens = query.docs.map((snap) => snap.id);
return admin.messaging().sendToDevice(tokens,
{
notification: {
title: "Nieuw bericht",
body: "Je hebt een nieuw bericht van Quick Fix Repar",
click_action: "FLUTTER_NOTIFICATION_CLICK",
}
},
{
"priority": "high",
"contentAvailable": true
});
});

相关内容

  • 没有找到相关文章

最新更新