【问题标题】:When does OnNewToken() actually get called?OnNewToken() 什么时候真正被调用?
【发布时间】:2021-11-18 01:50:43
【问题描述】:

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

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

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

如果它是这样工作的,那很好。我只是想弄清楚在用户运行应用程序时是否需要考虑动态令牌更改。

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

【问题讨论】:

  • "检查用户的 FCM 令牌" 这在代码中是什么意思?
  • 通过调用 FirebaseMessaging.Instance.GetToken()

标签: firebase-cloud-messaging azure-notificationhub


【解决方案1】:

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

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

那么关于第二个问题:在 main 方法或第一个活动中调用 FirebaseMessaging.Instance.GetToken() 确实很常见。

【讨论】:

  • 好的。这是我计划前进的方向,但关于是否有必要,我得到的信息相互矛盾。有人建议 OnNewToken() 就足够了,但我的观察肯定会让我相信我应该对登录进行冗余检查。我们一直遇到过期令牌问题。我也在考虑在登录后而不是在 MainActivity 中调用 GetToken()。我们在同一台设备上有多个用户,因此这将允许我们确保每个用户在换班时拥有最新的令牌。我假设这会没问题。
【解决方案2】:

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

【讨论】:

  • 嗯,我的理解是当用户登录时我也不需要手动检查令牌,但实际上我不能说这是我的观察。我肯定在令牌更改方面遇到问题,并且没有意识到它已更改。我所做的 Firebase 帮助票最终以“手动冗余/检查用户令牌并非闻所未闻”而告终,但我仍在尝试找出处理此问题的最佳方法。
  • 如果我在登录时检查用户的令牌,理论上,我什至不需要 OnNewToken() 中的代码,除非在用户运行应用程序时令牌可以更改,但到目前为止我已经无法做到这一点(即使我自己删除了他们的令牌,大概是强制发行一个新令牌)。
猜你喜欢
  • 2011-07-26
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多