2

我在我的應用程序中使用gcm。 在谷歌開發者控制檯頁面,我創建了一個項目,並獲得項目編號:爲什麼當應用程序更新時重新註冊到gcm?

Google Developers Console Project Number image

在我的應用程序中使用這個項目ID,用戶被註冊到GCM服務器並獲得registeration ID。然後它被髮送到我的第三方服務器進行存儲。

當第三方服務器想要向用戶發送消息時,它會使用我在帖子動作頭部的Google Developer Console頁面中獲得的apikey,並使用爲該特定用戶存儲的註冊ID 。我使用的API密鑰爲:

Google Developers Console Page API key image

請注意,這是針對服務器應用程序,我使用該信息的方式,關鍵是因爲,正如我解釋。

一切工作正常,消息由正確的用戶檢索等。我打算在谷歌播放部署我的應用程序,但部分寫的是什麼:GCM advanced topics混淆了我。它說:

當一個應用程序更新,應該廢止其現有的註冊ID,因爲它不能保證與新版本

,並在示例代碼的註釋部分工作Implementing GCM client sample code有此評論:

// Check if app was updated; if so, it must clear the registration ID 
// since the existing regID is not guaranteed to work with the new 
// app version. 

這兩個解釋是什麼意思?我想,除非我在這裏按再生關鍵:

Google Developers Console Renegerate Key Image

我的API密鑰不會改變。當我更新我的應用程序時,它爲什麼要改變(或者真的改變了)?還是我錯了?

回答

4

您正在混合兩個不同的術語 - API密鑰和註冊ID。部署新版本時不必創建新的API密鑰。

Google推薦要做的事(在上面包含的引用中)是重新註冊每個將新版本安裝到GCM的設備(並且不依賴先前獲得的註冊ID),因爲現有註冊ID分配給您的應用程序的設備不保證適用於新版本的應用程序。

+0

嗨@Eran,但我的問題是在每次更新時我收到一個通知額外的,如果我釋放3更新,那麼我會得到3通知。我如何控制這個? – Uday

+0

@Uday如果您在每次更新時註冊GCM,則可以獲得與以前相同的註冊ID或新註冊ID。無論哪種方式,你應該在你的服務器中替換新的ID。這樣每個設備在您的數據庫中將有一個註冊ID,並且您不會爲同一設備獲得多條消息。 – Eran

+0

hooo好的,謝謝指導。 – Uday

相關問題