向主题发送 FCM 推送通知但防止重复通知

时间:2021-07-06 08:35:23

标签: push-notification firebase-cloud-messaging

我正在创建一个应用程序,用户可以在其中订阅多个主题。 每当在应用程序中共享新闻文章时,都会为其分配多个主题。 每当与他们订阅的主题相关的新闻文章被分享时,用户都会收到推送通知。

假设用户订阅了主题 A 和 B。 属于这两个主题(A 和 B)的新闻文章被共享。 在这种情况下,我的代码中会发生什么,

for(const topic of topics) {
  ...
  admin.messaging().send(message);
  ...
}

因此用户会收到两条推送通知,一条针对主题 A,一条针对主题 B。 由于我不是向特定设备而是向主题发送 FCM 推送通知,因此我无法跟踪谁收到了推送通知,因此我无法手动防止重复通知。

有没有办法让我确保用户不会收到两次相同的 fcm 推送通知(即只收到主题 A 而不是主题 B 的推送通知)?

我同时处理服务器端 (TypeScript) 和客户端 (Flutter),因此非常感谢任何一方的解决方案!

1 个答案:

答案 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"
})