0

我對FCM的瞭解是,它的標記永遠不會過期,除非;FCM爲什麼會更改令牌

  • 該應用程序將刪除實例ID
  • 該應用新的設備
  • 用戶卸載上還原/重新安裝該應用
  • 用戶清除應用數據。

我提供了一個選項,用戶啓用/禁用通知,用戶點擊關閉我送null到服務器,並FirebaseInstanceId.getInstance().getToken()當用戶啓用push notifications

現在有的時候把它發送當用戶同樣重新啓用通知,並且幾次更改FCM Token

我的問題是:

  1. 爲什麼它改變Token,沒事的時候的4個條件 上面提到的true,如果它的隨機變化,然後有機會的話,它改變了令牌在任何時間點, 和服務器正在將通知發送給錯誤的令牌。
  2. 我發現,如果我清晰的數據,並打開該應用,它擊中令牌 登記,有時會同樣也將其存儲設備的udid ,或什麼樣的機制,通過它知道它是相同的 設備。
+1

請參考[本答案](https://stackoverflow.com/questions/41093189/firebase-fcm-registration-token)。它跟你是一樣的。希望它清除您的疑惑 – AndiM

回答

1

對於您的問題。

1)安全原因在於更改token。如果你的應用有一個靜態令牌,並且如果有人得到了這個令牌,他們可以擁有一個控制權一旦生成新的令牌,您必須使用服務器中的用戶數據對其進行更新。所以你不會把它發送到錯誤的標記。只有當你的用戶離線一段時間後纔會發生這種情況。

2)由FCM生成的令牌是唯一的。使用您的設備ID應用ID爲生成的令牌的FCM。所以如果你的設備改變了,沒有其他設備會得到相同的標記。生成令牌的完整機制不能用於相同的安全目的。

+0

「*使用您的設備ID和App ID生成的FCM令牌」* - 我想我也記得這一點。嗨Bhuvanesh,你是否也可以包括你的參考,我認爲這將是很好的補充。 –