Firebase的应用令牌在哪个时段更改以及如何pipe理?

我是新来的firebase我正在学习它像一个学步行走的蹒跚学步。 到目前为止,我设法使用Firebase框架为我的手机生成的令牌向我自己的手机发送消息。 现在这里是棘手的(在我看来)。 FirebaseInstanceIdService扩展服务中有一个名为onTokenRefresh()的方法。 因为它被称为刷新 ,那么我认为它会改变。 我想知道什么时候这个令牌被创build,什么时候会被改变?

如果它发生变化,假设我发送一个消息给一个已经离线的tokan'A'的设备,所以它将被排队。 现在,当该装置上线时,它将“刷新”该标记为“B”。 现在,由于该消息应该被传递给标记“A”,所以该消息将永远不会被传递。 我怎样才能pipe理这种情况?

Solutions Collecting From Web of "Firebase的应用令牌在哪个时段更改以及如何pipe理?"

一旦手机可以连接到Google服务器,就会在应用程序首次启动后生成令牌。 由于所需的连接性,这可能不会立即发生,但在大多数情况下,它会在用户打开应用程序后的几秒钟内发生。 只要标记生成,方法onTokenRefresh()被调用。

正如你所指出的,令牌可以改变,在这种情况下onTokenRefresh()方法将被再次调用。
刷新事件是罕见的,不要指望经常看到它。

当刷新令牌发生时,已经“成功”发送的所有消息(API返回给你一个消息ID)将被传递给旧令牌。

最后,即使在刷新发生之后,旧的令牌仍然会在短时间内工作,以允许应用程序将新的令牌传送到其后端。

在您的应用程序初次启动时,FCM的sdk会为客户端应用程序实例生成注册令牌。 如上所述,这是一件罕见的事情。 具体而言,注册令牌可能会在以下情况下更改:

  • 该应用程序删除实例ID。
  • 该应用程序在一个新的设备上恢复
  • 用户卸载/重新安装应用程序
  • 用户清除应用程序数据。

实例ID为您的应用程序的每个实例提供唯一的ID。实例ID提供了一个简单的API来生成安全令牌,授权第三方访问您的应用程序的服务器端托pipe资源。实例ID服务器甚至可以告诉您何时在您的应用程序被安装的最后一次使用。我们可以用这个来决定是否保留应用程序的数据或发送推送消息重新与用户接触。

每当设备令牌发生变化时,都会反映在onTokenRefresh()方法中。要更改设备令牌,我们可以调用此方法来获取刷新的令牌。

并随时获取设备令牌,我们可以使用FirebaseInstanceId.getInstance()。getToken()方法获取当前设备令牌。获取设备令牌需要一点时间。

点击这里阅读更多关于访问设备注册令牌。