我们的项目已被列入白名单,用于测试新的 GCM用户通知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 的全部意义在于使用.notification_key
而不是registration_ids
.
从文档中:
registration_ids
: […] 请求必须包含收件人——这可以是注册 ID、注册 ID 数组或 notification_key。必需的。
notification_key
:将单个用户映射到与该用户关联的多个注册 ID 的字符串。这允许第 3 方服务器向单个用户拥有的多个应用程序实例(通常在多个设备上)发送单个消息。第 3 方服务器可以使用 notification_key 作为消息的目标,而不是单独的注册 ID(或注册 ID 数组)。[…] 可选的。
上面的示例使用 HTTP 连接服务器 at https://android.googleapis.com
。
到目前为止,我尝试过:
- 包括一个空数组
registration_ids
,没有帮助 notification_key
在字段中将值作为注册 ID发送registration_ids
,也不起作用- 将
project_id
标题设置为我们的项目编号(根据创建时的要求notification_key
),仍然没有运气 - 使用 CCS (XMPP) 而不是 HTTP 与 GCM API 服务器通信,但不幸的是 IP 在 Google App Engine 上被阻止
- 包括
notification_key
和notification_key_name
在请求中,没有帮助
更新:按照这里的建议,我还尝试将有效负载发布到/gcm/notification
,该"operation": "send"
属性包含在 JSON 请求有效负载中。仍然没有帮助。现在我得到:
{"error":"Missing \"registration_ids\" field"}
同样的事情,只是这一次它被发送回 JSON 编码。