OnNewToken() 什么时候真正被调用?

When does OnNewToken() actually get called?

我查看了文档,它指出在生成新令牌时将调用 OnNewToken()。通常,这将发生在应用安装、恢复或用户清除数据时。也有一些时候,虽然很少见,但令牌只会失效并会发行一个新令牌。

这是我最好奇的最后一个案例

如果用户正在使用该应用程序,并且他们的令牌变为无效,那么是调用 OnNewToken() 还是仅在下次应用程序启动时调用?在我的测试中,我无法在应用程序 正在使用 时调用 OnNewToken()。我已经在全新安装上启动了应用程序,通过 OnNewToken() 检索了令牌,然后在该方法之外单独删除了用户的令牌,并且在我停止应用程序并再次启动它之前不会调用 OnNewToken()。

能这样就好了。我只是想弄清楚是否需要在用户 运行 应用程序时考虑动态令牌更改。

另外,第二个稍微相关的问题是,在用户登录时检查其 FCM 令牌以确保他们拥有最新令牌是否是一种不好的做法?

我的理解是,如果旧的无效,OnNewToken 将被即时调用。您不需要在他们登录时手动检查令牌。

如果您自己管理令牌注册表,您通常会在两个地方检查并发送更新的令牌到 registry/server:

  1. 在应用程序的主要方法或第一个 activity 中调用 FirebaseMessaging.Instance.GetToken(),以确保您在应用程序启动时拥有该用户的最新令牌。
  2. 在您的服务 onNewToken 中,确保您在服务处于活动状态时拥有该用户的最新令牌。

所以关于你的第二个问题:在 main 方法中调用 FirebaseMessaging.Instance.GetToken() 或首先调用 activity.

确实很常见