我们的项目已经列入白名单,用于测试新的GCM User Notifications API,该API允许将注册ID分组到一个“通知密钥”,然后可以将其用于向用户拥有的所有设备发送消息。
但是,当我发送这样的请求时:
POST /gcm/send
Authorization: key=…
Content-Type: application/json
{"notification_key": "…",
"data": {…}
}
我收到错误回复:
400 Bad Request
Missing "registration_ids" field
使用registration_ids
字段而不是notification_key
发送邮件可以解决问题(并传递邮件),但使用用户通知API的重点是使用{{1而不是notification_key
。
registration_ids
: [...]请求必须包含收件人 - 这可以是注册ID,注册ID数组或notification_key。必需的。
registration_ids
: 将单个用户映射到与该用户关联的多个注册ID的字符串。这允许第三方服务器将单个消息发送到单个用户拥有的多个应用程序实例(通常在多个设备上)。第三方服务器可以使用notification_key作为消息的目标,而不是单个注册ID(或注册ID数组)。 [...]可选。
以上示例使用notification_key
处的HTTP连接服务器。
到目前为止,我试过了:
https://android.googleapis.com
的空数组,无效registration_ids
字段中将notification_key
值作为注册ID发送,不起作用registration_ids
标题设置为我们的项目编号(在创建project_id
时需要),仍然没有运气notification_key
和notification_key
,无效 更新:根据建议的here,我还尝试将有效负载发布到notification_key_name
,并在JSON请求有效负载中包含/gcm/notification
属性。仍然没有帮助。现在我明白了:
"operation": "send"
同样的事情,只有这次它被发送回JSON编码。
答案 0 :(得分:10)
文档有问题,您必须使用此请求:
curl -vvv -X POST --header "Content-Type: application/json" --header "project_id: <YOUR-PROJECT-ID>" --header "Authorization: key=<YOUR-PROJECT-SECRET-KEY>" --data @- "https://android.googleapis.com/gcm/send" << EOF
{
"to": "<NOTIFICATION-ID>",
"data": {},
}
EOF
请参阅我的博文https://medium.com/appunite-edu-collection/d7df385b0ff4了解更多详情
答案 1 :(得分:0)
Have you got project_id for your project.
If yes then have you included same at proper place.
检查this ..
答案 2 :(得分:0)
我也遇到过这个问题“HTTP / 1.1 401 Unauthorized”。 而且,我通过使用浏览器密钥替换API密钥解决了这个问题。
如果您的应用程序在客户端上运行,请使用浏览器密钥。
请参阅以下链接: https://developers.google.com/console/help/new/#generatingdevkeys