Firebase 推送通知在发送到设备组 token 时仅显示 "from"

标签 firebase go firebase-cloud-messaging

我正在开发一项用于处理与 Firebase 云消息传递集成的推送通知的服务。当我发送新消息并指定设备 token 时,它工作正常。我收到通知标题、正文等。但是,当我指定设备组 ID(当我使用设备 token 注册新组时得到的响应)时,设备会收到通知,但它是空白的 - 仅显示“from”字段是发件人 ID。没有显示通知标题、正文等。

消息构造代码

func FcmNewMessage(title, body, collapseKey, token string) *messaging.Message {
    oneHour := time.Duration(1) * time.Hour
    message := &messaging.Message{
        Notification: &messaging.Notification{
            Title: title,
            Body:  body,
        },
        Android: &messaging.AndroidConfig{
            TTL:         &oneHour,
            CollapseKey: collapseKey,
        },
        APNS: &messaging.APNSConfig{
            Headers: map[string]string{
                "apns-collapse-id": collapseKey,
            },
        },
        Webpush: &messaging.WebpushConfig{
            Notification: &messaging.WebpushNotification{
                Icon: "https://my-server/icon.png",
            },
            Headers: map[string]string{
                "urgency": "high",
                "topic":   collapseKey,
            },
        },
        Token: token,
    }
    return message
}

正如您在上面看到的 - “token”参数可以是设备 token 或设备组通知 key token 。当使用设备组 token 时就会出现问题。

以下是客户端通知:

使用设备 token 时:

{
  "from": "53xxxxxxxxxx",
  "priority": "high",
  "notification": {
    "title": "test",
    "body": "test",
    "icon": "https://my-server/icon.png"
  },
  "collapse_key": "collapseMe"
}

使用设备组 token 时:

{
  "from": "53xxxxxxxxxx"
}

我还应该提到,当使用设备组 token 时,我从 FCM 得到的响应是:

projects/projectid-123/messages/

所以最后没有消息ID。通常响应是:

projects/projectid-123/messages/<messageId>

最佳答案

不再支持设备组 token 。它们是 v1 API 的一项功能,但现在不再使用,这就是它不起作用的原因。 Firebase 文档不是很好,需要进行一些认真的挖掘才能找到这一点。

关于Firebase 推送通知在发送到设备组 token 时仅显示 "from",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54422754/

相关文章:

ios - (setValue :) Cannot store object of type _SwiftValue at pictureURL. 只能存储NSNumber, NSString, NSDictionary, and NSArray类型的对象

android - 开始使用新的 Firebase 网站,我在测试 Android 身份验证示例程序时遇到此错误

go - 如何在 GoLang 中分离编码的 ecdsa 公钥和私钥

dictionary - 使用附加属性作为键从结构创建映射或对象

javascript - Service Worker 仅显示第一个推送通知(来自云消息传递),直到我重新加载 - 工作人员收到消息

android - Firebase 云消息在后台崩溃

javascript - 如何在reactfire上启用持久性?

node.js - 使用 React 和 Node 进行 Firebase 身份验证

带有 for 循环的 golang channel 行为

java - 如何通过java服务器使用FCM向android设备发送推送通知?