GCM错误=通过JSON发送消息时缺少注册信息

43
我正在通过 Fiddler 测试推送 GCM。 头部信息:
User-Agent: Fiddler
Authorization: key=AIzaSyAkXfcuLLCZ-5n18wwO6XeJ13g-z9ja
Host: android.googleapis.com
Content-Length: 286

正文:

{"registration_ids":["APA91bHyn8YHcH_vSuOo7_A0PMgF5SU1K0FebOFGKXYTqpN5x4eD0tVBvzQLn749TVcczN5gSjB1wqf5AzYfxFI_qskA1Nzipf-9MfdEom1PI1vkFqKIg9B8vZvPLOLozE7jaRzELuyDzpFRbO3Xh5lT-KDA"],"collapse_key":"8b990f5a-78fc-4bad-b242-ffc740a750fb","data":{"message":"message to device"}}

我遇到了一个错误

Error=MissingRegistration

我的问题出在哪里? 所有的id都是正确的。


2
你应该删除私人数据,例如密钥和秘密ID。 - gutte
4个回答

117

你可能忘记在头部指定内容类型为 JSON。

Content-Type: application/json

如果省略 Content-Type,则假定格式为纯文本。

对于纯文本,注册 ID 是通过名为 registration_id 的参数传递,而不是 registration_ids,这解释了您的 MissingRegistration 错误。


在2019年,这仍然有意义! - CoolMind
1
@SatyajitBehera 也许你有不同的问题。我已经好几年没有使用GCM了,但是这个答案似乎仍然对一些人有帮助(根据最近的投票)。 - Eran

5

对于新的云消息,当您想从服务器发送下行消息时,需要使用“to”来声明目标注册ID。

如下:

https://gcm-http.googleapis.com/gcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."
}

5
如果您想发送推送通知,必须包含 "to:..." 吗? 如果我想从客户端向所有用户发送推送通知怎么办?(例如管理员客户端...) - XcodeNOOB

2

0

Swift 5

In my case receiver token was missing and after put the fcm receiver token its work fine for me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接