我正在创建一个应用程序,用户可以在其中订阅多个主题。 每当在应用程序中共享新闻文章时,都会为其分配多个主题。 每当与他们订阅的主题相关的新闻文章被分享时,用户都会收到推送通知。
假设用户订阅了主题 A 和 B。 属于这两个主题(A 和 B)的新闻文章被共享。 在这种情况下,我的代码中会发生什么,
for(const topic of topics) {
...
admin.messaging().send(message);
...
}
因此用户会收到两条推送通知,一条针对主题 A,一条针对主题 B。 由于我不是向特定设备而是向主题发送 FCM 推送通知,因此我无法跟踪谁收到了推送通知,因此我无法手动防止重复通知。
有没有办法让我确保用户不会收到两次相同的 fcm 推送通知(即只收到主题 A 而不是主题 B 的推送通知)?
我同时处理服务器端 (TypeScript) 和客户端 (Flutter),因此非常感谢任何一方的解决方案!
答案 0 :(得分:1)
您想要使用的是对 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"
})