从MainActivity调用Firebase getToken()是否可靠?

时间:2017-01-02 13:59:42

标签: android firebase firebase-cloud-messaging

我认为不是将我从onTokenRefresh()获取的令牌保存到另一个地方,为什么不让Firebase保留它,然后在需要时使用它直接查询它:

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

这样,我应该能够从最可靠的来源获取令牌。

但是我试图搜索它并且没有找到任何暗示在服务之外使用的东西。我试图实现它,并发现如果已经调用了onTokenRefresh(),它确实返回了正确的标记,否则返回null。我认为无论手动保存令牌,这都是一样的。

那么是否有任何指示阻止以这种方式使用?

1 个答案:

答案 0 :(得分:1)

您可以安全地从任何地方拨打FirebaseInstanceId.getInstance().getToken(),它会为您提供当前令牌。

问题是,如果您只在<{1}}中 调用它,则有一些情况您将无法捕获:

  • 可能尚未创建令牌,其中返回MainActivity返回getToken()

  • 在您致电null后,令牌可能会被回收,在这种情况下,您的代码正在使用过时的令牌。

为确保您能够抓住这两种情况,您应该实施getToken()