将 FCM 推送通知发送到主题但防止重复通知
Sending FCM Push Notification to topic but preventing duplicate notification
我正在创建一个用户可以在其中订阅多个主题的应用程序。
每当在应用程序中共享新闻文章时,都会为其分配多个主题。
每当分享与他们订阅的主题相关的新闻文章时,用户都会收到推送通知。
假设用户订阅了主题 A 和 B。
属于这两个主题(A 和 B)的新闻文章被共享。
在这种情况下,我的代码中发生的是,
for(const topic of topics) {
...
admin.messaging().send(message);
...
}
所以用户会收到两条推送通知,一条针对主题A,一条针对主题B。
由于我不是向特定设备而是向主题发送 FCM 推送通知,因此我无法跟踪谁收到了推送通知,因此我无法手动阻止重复通知。
我是否有办法确保用户不会两次收到相同的 fcm 推送通知(即只收到主题 A 而不是主题 B 的推送通知)?
我同时处理服务器端 (TypeScript) 和客户端 (Flutter),因此非常感谢任何一方的解决方案!
您想要使用的是对 send
的单个调用以发送到所有主题 using a condition。
鉴于您的主题 A 和主题 B 的示例,那将是:
const condition = '\'stock-GOOG\' in topics || \'industry-tech\' in topics';
const message = ;
admin.messaging().send({
notification: {
title: 'Your notification title',
body: 'Your notification body'
},
condition: "'TopicA' in topics ||'TopicB' in topics"
})
我正在创建一个用户可以在其中订阅多个主题的应用程序。 每当在应用程序中共享新闻文章时,都会为其分配多个主题。 每当分享与他们订阅的主题相关的新闻文章时,用户都会收到推送通知。
假设用户订阅了主题 A 和 B。 属于这两个主题(A 和 B)的新闻文章被共享。 在这种情况下,我的代码中发生的是,
for(const topic of topics) {
...
admin.messaging().send(message);
...
}
所以用户会收到两条推送通知,一条针对主题A,一条针对主题B。 由于我不是向特定设备而是向主题发送 FCM 推送通知,因此我无法跟踪谁收到了推送通知,因此我无法手动阻止重复通知。
我是否有办法确保用户不会两次收到相同的 fcm 推送通知(即只收到主题 A 而不是主题 B 的推送通知)?
我同时处理服务器端 (TypeScript) 和客户端 (Flutter),因此非常感谢任何一方的解决方案!
您想要使用的是对 send
的单个调用以发送到所有主题 using a condition。
鉴于您的主题 A 和主题 B 的示例,那将是:
const condition = '\'stock-GOOG\' in topics || \'industry-tech\' in topics';
const message = ;
admin.messaging().send({
notification: {
title: 'Your notification title',
body: 'Your notification body'
},
condition: "'TopicA' in topics ||'TopicB' in topics"
})