Firebase Admin SDK 发送多播

Firebase Admin SDK sendMulticast

这段带有较小令牌列表的代码可以正常工作,但我不知道为什么当令牌单独有效时它无法向所有令牌发送通知。

我做错了什么?当令牌列表包含较少的令牌时,将发送所有通知。最多有 30 个令牌。

        let notificationData = {
            Id: messageInfo.ChatId,
            Type: notificationType.ChatMessage,
            Data: chatRoom
        };

        var payload = {
            notification: {
                title: title,
                body: body,
            },
            data: {
                NotificationData: JSON.stringify(notificationData),
            },
            apns: {
                payload: {
                    aps: {
                        sound: "default",
                    },
                },
            },
        };

        payload.tokens = chatRoom.FCMTokens;

        return admin.messaging().sendMulticast(payload).then(response => {
            if (response.failureCount > 0) {
                const failedTokens = [];
                response.responses.forEach((resp, idx) => {
                    if (!resp.success) {
                        failedTokens.push(payload.tokens[idx]);
                    }
                });
                console.log('List of tokens that caused failures: ' + JSON.stringify(response));
                console.log('List of tokens that caused failures: ' + failedTokens);
            }
            else {
                console.log("Successsfully MulticastMessage");
            }
            return null;
        }).catch(error => {
            console.log("Error sending notification", error);
            return null;
        });

更多信息:

问题是负载中的许多用户超过了 4kb

通知消息可以包含可选的数据负载。两种消息类型的最大负载均为 4KB,但从 Firebase 控制台发送消息时除外,它强制执行 1024 个字符的限制。