Firestore:使用云功能向特定设备发送通知



我正在开发一个函数,该函数每分钟运行一次,检查一些东西,如果是真的,它会向特定用户的设备发送通知。问题是我不知道如何只发送给那个用户:

export const remindEvents = functions.pubsub
.schedule("* * * * *").onRun(() => {
const querySnapshot = await db
.collectionGroup('leases')
.where(
'frequency',
isEqualTo: 'testing',
)
.get()
.then((querySnapshot) {
for (var doc in querySnapshot.docs) {
// HERE I TAKE THE DOCS I NEED OK
// send notification
const token = querySnapshot.data()!.token;
const payload: admin.messaging.MessagingPayload = {
notification: {
title: "New notification!",
body: `you just got a notification`,
icon: "your-icon-url",
click_action: "FLUTTER_NOTIFICATION_CLICK",
},
};
// THIS IS WHAT I'M NOT SURE ABOUT
// return fcm.sendToDevice(token, payload);
}
});
});

这里我有另一个工作示例,但在本例中,当在集合中创建文档时:

export const sendToDevice = functions.firestore
.document("orders/{orderId}")
.onCreate(async (snapshot) => {
const order = snapshot.data();
const querySnapshot = await db
.collection("users")
.doc(order.seller)
.get();
const token = querySnapshot.data()!.token;
const payload: admin.messaging.MessagingPayload = {
notification: {
title: "New Order!",
body: `you sold a ${order.product} for ${order.total}`,
icon: "your-icon-url",
click_action: "FLUTTER_NOTIFICATION_CLICK",
},
};
return fcm.sendToDevice(token, payload);
});

我将如何提取第一个sendToDevice以直接指向我需要的具有云功能的用户?

为应用程序使用Flutter。

在您的第一个代码片段中,您需要了解要向其发送消息的设备的令牌。由于您谈论的是特定用户,因此您需要以某种方式查找该用户的设备令牌。

常见的方法是在数据库中为每个用户保留设备令牌的映射。当您监视客户端上的令牌生成时,您可以将令牌添加到此数据库中。当FCM告诉令牌不再使用时,您将从数据库中删除令牌,如执行令牌清理的示例项目所示。

相关内容

  • 没有找到相关文章

最新更新