消息到GCM设备的URL是否正确?

时间:2015-09-05 22:09:55

标签: android google-cloud-messaging

GCM的文档说应用服务器应该使用https://gcm-http.googleapis.com/cloud-messaging/send向GCM设备发送消息,但示例程序(在GcmSender类中)使用https://android.googleapis.com/gcm/send

哪一个是正确的?

我在该领域使用GCM应用程序几年后使用后一个URL,客户端使用较旧的类,而不是当前记录的类。我想这意味着我的实现是C2DM,而不是GCM,但上面的URL不一致让我有点不确定。除了URL之外,我的应用服务器实现与今天记录的内容相匹配,例如,它使用此格式向GCM设备发送消息:

内容类型:应用/ JSON 授权:键= AIzaSyZ-1U ... 0GBYzPu7Udno5aA

{   “registration_id”:“APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx ......”,   “数据”:{      ...   }, }

这也很奇怪 - 示例应用使用“to”而不是“registration_id”,我自己的应用使用“registration_ids”。

此外,我的应用服务器从未使用过文档让我相信所有C2DM应用都使用的“ClientLogin Auth令牌”。这增加了我对我的实现是C2DM还是GCM的困惑,因此它是否会在2015年10月20日停止工作或继续工作。

有人可以澄清吗?

谢谢,

标记

1 个答案:

答案 0 :(得分:4)

目标网址

这似乎是示例代码的经典案例,无法跟上API的最新发展。它经常发生在Google

https://gcm-http.googleapis.com/gcm/send是通过HTTP发送邮件的正确网址。 AFAIK https://gcm-http.googleapis.com/cloud-messaging/send不正确。

https://android.googleapis.com/gcm/send适用于以前的版本,但仍然有效。

to和registration_ids

当您要向单个收件人发送邮件时,将使用to字段。当您要为一个或多个收件人发送邮件时,将使用registration_ids字段。因此,仅发送给一个人两者都可以使用。然而,后者期望它的输入是一个数组。

如果您一次向一个收件人发送,则使用XMPP可能更有效。 XMPP还具有能够从设备接收消息的额外好处。