2015-12-13 40 views
1

從谷歌開發人員網站,我發現GCM令牌可一段時間後改變:(例如GCM onTokenRefresh()之後再預訂主題

實例ID服務定期啓動回調, 每6幾個月),請求您的應用刷新其令牌。它可能會在以下情況下啓動回調:

存在安全問題;例如,SSL或平臺問題。

設備信息不再有效;例如備份和恢復。

實例ID服務受其他影響。

我使用GCM主題訂閱發送推送通知的Android應用程序,在這種情況下,當令牌已被刷新,我需要再次重新訂閱的所有主題或GCM服務器會自動做呢? 預先感謝您。

+0

我做了一段時間的研究,不能找到GCM主題下的文檔標籤。我在這裏查看了代碼:https://github.com/google/gcm/blob/master/samples/android/gcm-demo/src/main/java/com/google/android/gcm/demo/ui/TopicsFragment。 java#L83-L137爲主題。最後,我看到了這個文檔:https://developers.google.com/instance-id/guides/android-implementation#refresh_tokens,我認爲如果刷新標記,則應更新新標記而不是舊標記服務器,但在此之前,您必須檢查主題,併爲舊標記「unsubscribeTopic」並將新標記放入主題中。 – bjiang

回答

1

我測試過,當令牌刷新(您收到一個新的令牌)時,您必須重新註冊所有主題。

也會檢出this SO

樣品測試:

  1. 獲得令牌( 「... b43sCSdoEDkU54SIWll3hbDVsd7E1UdwlAvp4LP」)
  2. 註冊的話題。
  3. 發送主題的通知
  4. 工程!
  5. 重新啓動幾次的應用,仍然可以得到通知話題
  6. 部隊呼叫

instanceID.getToken(defaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE);

  • 令牌刷新(」 ... XVT_pZq7fy_vKmskiGpDXMyqdAF6ODl_46JMdi5" )爲主題
  • 發送通知。我不明白!
  • 更多細節:

    工具#1 使用this檢查谷歌GCM數據

    1. 重新安裝應用程序
    2. 獲取新的令牌( 「」)

    來自工具#1的回覆

    { 
        "applicationVersion": "39", 
        "connectDate": "2016-01-12", 
        "application": "com.esportlivescore.develop.debug", 
        "authorizedEntity": "11443413691531", 
        "connectionType": "MOBILE", 
        "appSigner": ".................", 
        "platform": "ANDROID" 
    } 
    
  • 訂閱主題
  • 響應從工具#1

    { 
        "applicationVersion": "39", 
        "connectDate": "2016-01-12", 
        "application": "com.esportlivescore.develop.debug", 
        "authorizedEntity": "11443413691531", 
        "rel": { 
         "topics": { 
          "match-28388-start": { 
           "addDate": "2016-01-13" 
          } 
         } 
        }, 
        "connectionType": "MOBILE", 
        "appSigner": ".................", 
        "platform": "ANDROID" 
    } 
    
  • 消息爲主題正在工作
  • 請求新令牌(刷新)
  • 谷歌重新發送我的老令牌:)
  • 再次...
  • 現在我沒有任何訂閱:(