我在我的Node.js项目中有FCM集成,我向IOS用户发送了多个通知,我需要管理通知计数,即徽章计数,这些设备在设备之间会有所不同,但我会向特定主题发送通知订阅这些设备。
我的有效负载是:
var payload = {
notification: {
title: "Title...",
body: "Notification Body...",
sound: "customeSound.caf",
badge : "?"
},
data: {
testData: "custom data"
}
},
topic = "topicName";
admin.messaging().sendToTopic(topic, payload)
.then(function (response) {
// See the MessagingTopicResponse reference documentation for the
// contents of response.
console.log("Successfully sent message:", response);
})
.catch(function (error) {
console.log("Error sending message:", error);
});
});
答案 0 :(得分:2)
订阅相应主题的所有设备都将收到您设置的相同负载。
您必须为每个设备发送单独的有效负载。或者,如果适用,可能只是对具有相似badge
值的那些进行分组 - 但这需要您发送到一组令牌(使用registration_ids
)而不是发送到主题。
答案 1 :(得分:2)
如果您有设备令牌并且想要将徽章计数发送到相应的设备令牌,
与其一个一个地发送它们(我个人认为这不是一个好主意),您可以做的最佳选择是:-
您可以通过执行以下操作来实现此目的..... 首先,您需要查询您的数据库以分别获取设备令牌和徽章计数
所以说就像你有和数组
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
}]
现在您可以映射此数组并组合 fcm 消息数组,如下所示:-
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