FirebaseInstanceId.getInstance().getToken() = null 何时?

Ian*_*ton 1 android firebase firebase-cloud-messaging

从何处、何时检索令牌以及何时可用?

是同步调用Firebase服务器吗?如果我在应用程序生命周期中太早调用它,它可能还没有被填充吗?

AL.*_*AL. 5

从何处、何时检索令牌以及何时可用?

该令牌由 FCM 实例 ID 服务在后台生成,该服务在您的应用程序运行后立即启动。关于如何生成令牌的详细信息尚不清楚,但我的看法是,设备需要与互联网建立良好的连接,才能与 FCM 服务器进行通信以获取令牌。

是同步调用Firebase服务器吗?

从技术上来说,不。正如文档中提到的:

FirebaseInstanceID.getToken()如果尚未生成令牌,则返回 null。

此时,如果令牌为空,您应该在您的onNewToken()位置中期待一个触发器,然后您可以调用getToken()现在应该包含令牌的触发器。

如果我在应用程序生命周期中太早调用它,它可能还没有被填充吗?

通常可以在您的应用程序的 MainActivity 中尽快调用getToken(),在大多数情况下,当您的应用程序到达该点时,它已经有了一个值。但话又说回来,如果它为空,你仍然应该正确处理它。