我正在开发一项用于处理与 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/