2014-02-17 72 views
1

我有一個應用程序,通過Service(經典模式)接收GCM通知並在後臺更新本地數據。GCM和應用程序更新:更新後應用程序未打開時如何重新註冊?

文檔說,如果發生應用程序更新,註冊ID可能變得無用,並且需要檢查新的註冊ID。 谷歌提供的樣本(DemoActivity)顯示,很快,在主要活動的OnCreate(或OnResume)中應該完成檢查。

但是,如果用戶通過Play商店更新應用程序,並且後不能立即打開應用程序? 在這種情況下,是否存在更新後註冊ID變得無效並且要停止接收通知(並且我的後臺服務停止更新本地數據)的風險?

或者,也許這種情況是由Google GCM服務器與「規範ID」機制管理?

謝謝
最大

回答

8

一個blog post by Pushbullet細化到這個問題的解決方案:創建一個BroadcastReceiver一個偵聽PACKAGE_REPLACED

<receiver android:name=".UpdateReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
     <data android:path="<YOUR_PACKAGE_NAME_HERE>" 
       android:scheme="package" /> 
    </intent-filter> 
</receiver> 

,只要你的應用程序更新將被調用。當這個被調用時,你應該忘記你的註冊ID並重新註冊到GCM。

+1

如果在使用新的Instance Id API時這個過程仍然是必需的,或者我可以期望在更新應用程序時在'InstanceIDListenerService'中調用'onTokenRefresh',那麼文檔還不清楚嗎? – Singed