每个用户具有不同徽章编号的 MulticastMessage

MulticastMessage with different badge number for every user

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

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

非常感谢!

据我所知,多播消息中每个用户的消息是完全一样的。因此,如果您需要显示不同的徽章数量,则需要为它们制作单独的消息。但是具有相同 content/badge 计数的所有收件人可能是同一多播消息的一部分。

您可以通过执行以下操作来实现此目标...... 首先,您需要查询您的数据库以分别获取设备令牌和徽章计数

所以说你有和数组

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