首页 > 解决方案 > MulticastMessage 为每个用户提供不同的徽章编号

问题描述

我已经在我的服务器端应用程序中设置了 FCM 服务,并且我一直在发送通知(一个接一个)并且按预期工作。

现在,我正在尝试使用 MulticastMessage 发送通知。它运作良好,设备正在正确接收通知。但是我不知道如何为每个用户设置不同的徽章编号。我正在使用该addAllTokens方法设置设备,并且我正在寻找类似于addAllBadges发送与我插入的每个设备相对应的徽章列表addAllTokens,但我找不到解决方案。是否可以?我怎样才能做到这一点?

非常感谢你!

标签: firebasefirebase-cloud-messaging

解决方案


您可以通过执行类似的操作来实现这一点.....首先您需要查询您的数据库以分别获取设备令牌和徽章计数

所以说就像你有和数组

const badgeCounts = [{
    device_token:'aaaaaaaaaaaaaaaaaaaaaa',
    badge_count: 1
},{
    device_token:'bbbbbbbbbbbbbbbbbbbbbb',
    badge_count: 2
},{
    device_token:'cccccccccccccccccccccc',
    badge_count: 3
},{
    device_token:'dddddddddddddddddddddd',
    badge_count: 4
}]

Now you can map over this array and compose array of fcm messages, something like below :-

const fcmMessages = [];

badgeCounts.forEach((data) => {
  fcmMessages.push({
    token: data.device_token, //device token
    apns: {
      payload: {
        aps: {
          alert: {
            title: "your title",
            body: "your body",
          },
          badge: data.badge_count, // badge
          contentAvailable: true,
        },
      },
    },
    data: {
      // any payload goes here...
    },
    notification: {
      title: "your title",
      body: "your body",
    },
  });
});

/// in firebase messiging you can do like
messaging.sendAll(fcmMessages);

参考文档https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging-1#sendall


推荐阅读