2016-12-26 104 views
3

我在我的推送通知Android應用的使用FCM。我有下面的類來獲得fcm令牌。是FCM刷新令牌上的應用程序更新?

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService { 
    @Override 
    public void onTokenRefresh() { 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    } 
} 

當我的應用程序安裝並且我能夠獲取令牌時,這被正確調用。不過,我不確定我的應用是否已更新(來自Play商店),那麼此方法將被調用或不。該文檔只是說,只要令牌更改,該方法就會被調用。但更新應用程序可能不會更改令牌。當

+0

是的,它不會更新令牌。 –

+2

請參考[在此輸入鏈接描述](http://stackoverflow.com/questions/39633285/ontokenrefresh-not-getting-called-in-signed-apk-if-previous-version-of-app-inst) –

回答

0

更多信息安裝/清除數據 - 生成新的令牌。從Play商店

更新 - 令牌保持不變。

如果你想調用onTokenRefreshed(),你應該做手工。

點擊here閱讀更多關於它。

6

正如在評論部分在post指出的@Dharmitabhatt,註冊標記是當一個應用程序是更新 refereshed。

每當一個令牌是Android刷新,則應該調用onTokenRefresh()方法:

當系統確定令牌需要刷新調用。應用程序應調用getToken()並將令牌發送給所有應用程序服務器。

這會不會非常頻繁地調用,它是需要密鑰輪換和處理實例ID的變化,由於:

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

該系統甚至會扼殺刷新以避免使用令牌更新過載應用程序服務器。

所以你說得對,更新應用程序並不一定會刷新令牌。

+0

很好的回答,但是它的解決方案是什麼? –

+0

@SamRamezanli嗨。我不確定你在找什麼解決方案。 –

+0

嗨@AL。我們如何克服這個問題?我在我的應用中添加了一個需要Firebase令牌的功能。但是,當應用程序獲得更新時,不會生成此令牌,因此我的當前用戶將無法使用該功能。 我怎麼能夠強制它再次生成令牌? –