我目前非常困在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
的数组字符串,但我不确定如何将通知发送给每个人的UID
UID
数组
试试这个;
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
});
});