這裏的情況是將GCM用於基於有效內容的推送通知。假設大約10個推送通知以不可摺疊的方式發送到GCM服務器,以便它們全部排隊。用戶還沒有得到這些通知,因爲用戶還沒有連接到互聯網。在註冊ID更改後處理GCM中存儲的消息
如果用戶收到這些通知之前,更新應用程序連接到互聯網後,該應用的註冊ID將會改變。
想知道,如果在這種情況下,將存儲的通知仍然可以傳送到設備或者他們會被完全丟棄?
我無法找到存儲的通知的處理時,註冊ID的文檔中的任何位置變化。任何人都可以請說一說嗎?
非常感謝。
這裏的情況是將GCM用於基於有效內容的推送通知。假設大約10個推送通知以不可摺疊的方式發送到GCM服務器,以便它們全部排隊。用戶還沒有得到這些通知,因爲用戶還沒有連接到互聯網。在註冊ID更改後處理GCM中存儲的消息
如果用戶收到這些通知之前,更新應用程序連接到互聯網後,該應用的註冊ID將會改變。
想知道,如果在這種情況下,將存儲的通知仍然可以傳送到設備或者他們會被完全丟棄?
我無法找到存儲的通知的處理時,註冊ID的文檔中的任何位置變化。任何人都可以請說一說嗎?
非常感謝。
我沒有看到有關這種非常不可能的情況的文檔。
它是如此不可能的理由是,一旦你連接到互聯網(以UDPATE應用程序),它很可能你下載並安裝更新之前,你會得到存儲的消息。
現在,假設你在安裝更新之前沒有得到它們。當應用程序正在更新時,由於GCM中的舊bug,如果在升級過程中收到消息,該應用程序將自動取消註冊。這正是GCM文檔建議每次更新應用程序時重新註冊GCM的原因。
在這個錯誤發生萬一,你將失去所有存儲設備在GCM服務器中的未送達的郵件,因爲您的應用將成爲該設備上的註冊。
另一方面,如果未傳送的郵件在GCM服務器中被延遲,直到更新應用程序,啓動更新的應用程序並重新註冊到GCM,則可能會傳送存儲的郵件,即使重新註冊導致新的註冊ID(注意註冊ID不一定會改變),因爲舊的註冊ID即使在分配了新的註冊ID之後仍然可以工作。
的這一切都這樣說,你不應該依賴於總是被交付的所有GCM消息。它從未得到保證。每當用戶啓動您的應用時,您應該將其與您的服務器同步(加載任何相關的數據),因此任何未交付的GCM消息將變得無關緊要。
謝謝埃蘭的詳細解釋。所以關鍵是,通知的傳遞應該被認爲是理所當然的。好的。那麼我們將不得不設計一些東西。再次感謝。 – Manish 2014-08-28 08:03:11