2015-09-05 37 views
4

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

哪一个是正确的?

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

Content-Type:application/json 授权:key = AIzaSyZ-1u ... 0GBYzPu7Udno5aA

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

这也是奇 - 示例应用程序的用途“,以“,而不是”registration_id“,我的应用使用”registration_ids“。

此外,我的应用程序服务器从未使用过文档使我相信所有C2DM应用程序都使用的“ClientLogin身份验证令牌”。这增加了我对我的实施是C2DM还是GCM的疑惑,因此是否会在10/20/2015停止工作或继续工作。

有人可以澄清吗?

感谢,

马克

回答

4

目标网址

看起来的示例代码不能与API的最新发展保持了一个经典案例。它通常足以与谷歌

https://gcm-http.googleapis.com/gcm/send是通过HTTP发送消息的正确URL。 AFAIK https://gcm-http.googleapis.com/cloud-messaging/send,不正确。

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

并registration_ids

的现场是用来当你想将消息发送到收件人。当您想要为一个或多个收件人发送邮件时,将使用registration_ids字段。因此,只发送给一个人都可以使用。然而后者希望它的输入是一个数组。

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

+0

谢谢 - 澄清了URL问题。总之,记录的URL(很可能)是错误的(应该是https://gcm-http.googleapis.com/gcm/send),但示例代码使用的仍然有效的URL是为以前版本引入的(GCM或C2DM?)。 但是,这仍然让我想知道我的实现是C2DM还是GCM。 –

+0

如果您可以注册正在使用GCM的设备,因为C2DM不再接受新的注册。 – e4c5

+0

是的,我可以注册一个新设备。我想GCM仍然与旧的客户端类(例如GCMBaseIntentService,GCMRegistrar等)兼容。 –