将 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"
})