簡體   English   中英

GCM令牌刷新以及何時將令牌發送到服務器

[英]GCM token refresh and when to send the token to server

我正在關注官方指南中的GCM-Android集成示例。

特別是我對上面鏈接類中的以下行感到困惑:

// You should store a boolean that indicates whether the generated token has been
// sent to your server. If the boolean is false, send the token to your server,
// otherwise your server should have already received the token.

現在我每次啟動主活動時都會調用intent服務,並且我相信instanceID負責啟動令牌刷新。

每次從主要活動發起此GCM注冊意圖時,我應該檢查共享首選項值嗎? 但是,在這種情況下刷新將失敗,因為在初始令牌獲取之后,條件將始終為真。

我應該丟棄共享的prefs邏輯 - 這樣每次都會向我的服務器發送一個新的令牌。 這樣做的正確方法是什么? 令牌如何刷新worrk以及何時刷新?

是的,您不需要將其保存在sharedPreference中。 為了保護客戶端應用和應用服務器免受潛在的惡意重用注冊令牌,您應該定期從服務器啟動令牌刷新。 從服務器端啟動GCM注冊令牌刷新時,客戶端應用程序必須使用GCM注冊客戶端/服務器握手處理tokenRefreshed消息。

根據該文檔 ,備份Google Cloud Messaging注冊返回的注冊令牌可能會導致已恢復應用的通知出現意外行為。 這是因為當用戶在新設備上安裝您的應用時,應用必須向GCM API查詢新的注冊令牌。 如果存在舊注冊,因為系統已備份並恢復它,則應用程序不會搜索新令牌。 要防止出現此問題,請從備份文件集中排除注冊令牌。

以下是Google服務的演示應用 - MyInstanceIDListenerService: https//github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/java/gcm/play/android/samples/com/ gcmquickstart / MyInstanceIDListenerService.java#L38

有關詳情,請參閱此處的官方Google文檔: https//developers.google.com/cloud-messaging/registration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM