2016-05-09 35 views
0

我使用InstanceId獲取Id和令牌,並將其存儲在我的應用程序的某處。重新安裝應用後,我得到了新的令牌和標識。當我使用舊令牌和ID通過gcm發送消息時,它顯示成功。但是,如果我僅使用令牌發送消息,則它會顯示規範。有人可以詳細解釋這一點嗎?使用InstanceId與Gcm令牌混淆

示例 - >結果:

1) 「OLDID:oldToken」 - >成功

2) 「oldToken」 - >成功和規範加新的令牌

3)「NEWID:newToken 「 - >成功

4)‘newToken’ - >成功

我在第一個例子問題:爲什麼不顯示規範和新的令牌?

檢查鏈接:click here

回答

0

需要指出的是規範的ID在迴應時,你從你的服務器將消息發送到谷歌的GCM服務器返回。 A canonical registration ID是客戶端應用程序請求的最後一次註冊的註冊令牌。這是服務器在向設備發送消息時應使用的ID。

從這個thread

當您收到來自谷歌的響應規範註冊ID,該消息是由GCM服務器和GCM服務器會試圖將其傳遞到設備接受。它是否實際發送到設備取決於設備是否可用(即連接到互聯網)。因此,如果您的服務器向舊ID和新ID發送GCM消息,設備可能會收到兩條消息。

規範註冊ID被定義爲您的應用程序請求的最後一次註冊的ID。這是服務器在向設備發送消息時應使用的ID。如果稍後嘗試使用不同的註冊ID發送消息,則GCM將像往常一樣處理請求,但它將在響應的registration_id字段中包含規範註冊ID。確保使用此canonical ID替換存儲在服務器中的registration ID

舊的註冊ID可以保持活動一段時間。但Google會告訴您,您需要通過響應發送的消息的canonical ID來更新特定設備/應用組合的regid。

選中此相關的SO問題: