如何在 Flutter Firebase Messaging 中订阅子集合?
How to subscribe to subcollection in Flutter Firebase Messaging?
我正在为我的 Flutter 应用程序处理通知。我已阅读文档,但找不到解决我的问题的方法。我想订阅子集合并使用 Firebase Functions 在子集合发生变化时发送通知。
让我更清楚地说明情况。我的应用程序中有几个用户,我已经设法设置用于消息传递的子集合。因此,对于每个用户,都有 /users 集合和 messages 子集合。我想订阅 /messages 子集合以获取 Firebase 函数的更改。
Firebase Functions in Typescript 的代码是这样的:
functions.firestore.
document("users/{userId}/messages/{messageId}")
.onCreate((snapshot, context) => {
console.log(snapshot.data());
console.log(snapshot.data());
return admin.messaging().sendToTopic("users", {
notification: {
title: snapshot.data()["username"],
body: snapshot.data()["text"],
clickAction: "FLUTTER_NOTIFICATION_CLICK",
},
});
});
但是,我不知道Flutter端如何订阅子集合(订阅集合我们使用FirebaseMessaging.instance.subscribeToTopic('users');
)。
有什么办法可以实现吗?我想检测每个用户的子集合是否有变化。
Firebase Cloud Messaging 中没有集合或子集合的概念,它只有一个简单的主题列表。
因此,您必须自己将子集合映射到唯一的主题名称,例如,将两个文档 ID 都放在其中:users_<userId>_messages_<messageId>
。使用这样的结构,您的用户可以订阅该特定主题,并且您的服务器端代码可以发送到相同的主题,例如:
functions.firestore.
document("users/{userId}/messages/{messageId}")
.onCreate((snapshot, context) => {
console.log(snapshot.data());
console.log(snapshot.data());
return admin.messaging().sendToTopic(
`users_${context.params.userId}_messages_${context.params.messageId}`, {
notification: {
title: snapshot.data()["username"],
body: snapshot.data()["text"],
clickAction: "FLUTTER_NOTIFICATION_CLICK",
},
});
});
我正在为我的 Flutter 应用程序处理通知。我已阅读文档,但找不到解决我的问题的方法。我想订阅子集合并使用 Firebase Functions 在子集合发生变化时发送通知。
让我更清楚地说明情况。我的应用程序中有几个用户,我已经设法设置用于消息传递的子集合。因此,对于每个用户,都有 /users 集合和 messages 子集合。我想订阅 /messages 子集合以获取 Firebase 函数的更改。
Firebase Functions in Typescript 的代码是这样的:
functions.firestore.
document("users/{userId}/messages/{messageId}")
.onCreate((snapshot, context) => {
console.log(snapshot.data());
console.log(snapshot.data());
return admin.messaging().sendToTopic("users", {
notification: {
title: snapshot.data()["username"],
body: snapshot.data()["text"],
clickAction: "FLUTTER_NOTIFICATION_CLICK",
},
});
});
但是,我不知道Flutter端如何订阅子集合(订阅集合我们使用FirebaseMessaging.instance.subscribeToTopic('users');
)。
有什么办法可以实现吗?我想检测每个用户的子集合是否有变化。
Firebase Cloud Messaging 中没有集合或子集合的概念,它只有一个简单的主题列表。
因此,您必须自己将子集合映射到唯一的主题名称,例如,将两个文档 ID 都放在其中:users_<userId>_messages_<messageId>
。使用这样的结构,您的用户可以订阅该特定主题,并且您的服务器端代码可以发送到相同的主题,例如:
functions.firestore.
document("users/{userId}/messages/{messageId}")
.onCreate((snapshot, context) => {
console.log(snapshot.data());
console.log(snapshot.data());
return admin.messaging().sendToTopic(
`users_${context.params.userId}_messages_${context.params.messageId}`, {
notification: {
title: snapshot.data()["username"],
body: snapshot.data()["text"],
clickAction: "FLUTTER_NOTIFICATION_CLICK",
},
});
});