2016-12-26 45 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令牌的功能。但是,当应用程序获得更新时,不会生成此令牌,因此我的当前用户将无法使用该功能。 我怎么能够强制它再次生成令牌? –