2014-08-27 249 views
10

你好,我想添加gcm到我的應用程序。我的應用程序是新聞應用程序。 用戶可以在註冊後查看新聞。應用程序詢問用戶興趣(經濟,體育,汽車等)並保存。 我想通過php和mysql發送消息給用戶。 我必須決定向哪些用戶發送哪些消息。所以我需要註冊ID。什麼是GCM註冊ID?

是android設備號碼嗎? 或Android設備谷歌帳戶和Android設備編號的組合?
或Android設備谷歌帳戶和Android設備號碼和我的應用程序用戶ID的組合?

Android裝置ID = A => GCM的RegID =一個
Android裝置ID = A, 谷歌帳戶ID = B => GCM的RegID = AB
Android裝置ID = A,GOOGLE 帳戶ID = b,應用程序x用戶ID = c => GCM RegID = abc

如果x用戶從應用程序註銷並且y用戶在同一設備中登錄,GCM RegId會更改嗎?如果它沒有改變,我把經濟新聞推給y用戶(對經濟不感興趣的人),設備會向錯誤的用戶顯示錯誤的通知。 那麼什麼是GCM註冊ID?

回答

15

註冊ID是由GCM分配給安裝在Android設備上的單個應用程序的單個實例的標識符。設備在註冊到Google Cloud Messaging時會分配此標識符。 GCM文檔沒有指定在該標識符中編碼的信息。

在一些較舊的Android版本(4.0.4之前版本)中,需要Google帳戶才能註冊到GCM。

如果多個用戶在同一臺​​設備上使用相同的應用程序,他們將擁有相同的註冊ID,因爲GCM不關心哪些用戶登錄到應用程序。服務器決定哪個用戶當前登錄到某個設備的應用程序,並根據這些知識僅向該設備傳遞相關的GCM消息。

+0

如果我卸載,然後重新安裝在同一個設備上的相同的應用程序,註冊ID將會不同?在這種情況下,我需要將註冊ID與我的服務器應用程序上的設備唯一標識符相關聯。 – ApheX 2016-03-22 09:17:07

8

註冊ID是特定設備上特定軟件包的唯一標識符。 GCM使用此標識識別目標。

在你的情況下,這個ID不會解決你的問題。

案例1:

如果從GCM在註銷註銷設備,並重新註冊,這是不是保證這項註冊ID將是不同的(可能是,也有可能)。

情況2:

GCM刷新註冊ID不時。

所以這個ID是不會去一個解決方案來識別登錄的用戶。


可能的解決方法

從GCM僅發送通用消息的裝置,比如「嘿,你有一些新的東西,去到服務器」。現在設備將向服務器請求新項目。這裏服務器將識別登錄的用戶並給他相應的數據。

+0

您是否有任何鏈接「註冊ID是特定設備上特定軟件包的唯一標識符.GCM使用此ID標識目標」? – Ajoy 2015-06-10 17:06:06