2015-09-05 39 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等)兼容。 –