我們已經完成了SNS設置,用於發送我們的Android應用程序的推送通知。一步一步的過程如下:使用亞馬遜SNS處理android應用程序卸載
每當應用出現時,它通過使一個
register
呼叫生成GCM註冊ID。代碼段是下面:private String registerOnGCM(){ try { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getBaseContext()); String token = gcm.register(Globals.GCM_TOKEN); return token; } catch (IOException e) { Log.e(TAG, "failed to complete token refresh process"); } return null; }
其中Globals.GCM_TOKEN是,在做該應用的FCM註冊所獲得的應用程序ID。
應用程序打電話給我們的後端服務器並通過此註冊ID。
後端服務器檢查這個註冊ID是否是新的。如果是新的,則使用該註冊ID創建新的SNS端點,然後將新的端點訂閱給爲該用戶創建的主題。它將所有這些數據保存在我們的數據庫中以供將來參考。
當發送推送通知給用戶的所有設備,我們只是廣播消息,爲用戶創建的主題和郵件發送到該用戶所擁有的所有設備。這工作得很好,涉及多個設備的情況下,我們的應用程序安裝在所有設備上。這個問題出現在卸載和重新安裝上。
重新安裝後,GCM註冊調用返回一個單獨的註冊ID並將其發送到後端。後端將其檢測爲新設備,並將其註冊爲SNS,即使設備相同,用戶也會收到多個SNS端點。當爲該用戶推送通知給該主題時,同一設備會收到兩個推送通知。可能是因爲舊的端點仍然存在,它應該已被禁用。
所以,我的問題:如何確保在提到的測試案例中,只有一個推送通知發送到Android設備。