0

我與有關GCM下一個問題掙扎。我讀的文件(GCM document)和由谷歌看到的例子如何實現Android應用內的GCM客戶端,但在整個文檔中有與註冊ID到期沒有提及。GCM Regisration標識過期時間

我看到that question但例如有由谷歌的最後一次更新不繼的GCM演示應用

我的問題是:

  1. 做了Regisration標識永遠會過期嗎?
  2. 如果Regisration標識過期,我怎麼能知道(是有任何事件)?

在此先感謝。

+0

我寫的答案你指的這個問題,我更新它的基礎上演示的(見答案底部的更新)的最後更新。基於我在GCM文檔和示例中閱讀的所有內容,只有在設備上安裝了新版應用後,才應該重新註冊GCM。您不必處理註冊ID的過期。 – Eran

+0

@Eran第一個要你回答你的問題。 這是閱讀文檔的結論。 但它有道理嗎? –

回答

3

我會擴大我的意見。

基於所有我在GCM文檔和例子閱讀,你應該只重新註冊到GCM您的應用程序的新版本後,安裝在設備上。您不必處理註冊ID的過期。

即使由於某種原因GCM決定給定設備上分配一個新的註冊ID爲您的應用,並沒有您的應用程序和你的服務器都意識到這一點,下一次你的服務器推送通知設備(使用舊的註冊ID),它會在Google的響應中獲得新的註冊ID作爲規範註冊ID,並且可以相應地更新其數據庫。我建議您爲每個設備分配您自己的唯一ID(由您的服務器分配),並在設備向您發送註冊ID時從設備接收該ID。這樣,如果註冊ID由服務器更改(由於來自Google的規範註冊ID響應),並且在稍後的某個時間點,由於某種原因,該應用程序會向您發送舊註冊ID,您將知道這兩個ID均涉及到同一個設備。

我能想到的唯一情況是何時在您的應用中設置人工超時並在超時過期(並將其發送到服務器)時重新註冊到GCM是您的服務器如此無用,可靠的是,它可能會丟失註冊ID數據庫(我已經看到了這些實際發生的人的問題)。這將允許服務器逐漸恢復丟失的註冊ID。