android - firebase的app token在什么时期发生变化,如何管理?

标签 android push-notification firebase firebase-cloud-messaging

我是 firebase 的新手,我正在学习它,就像一个蹒跚学步的 child 学习走路一样。到目前为止,我已经设法使用 firebase 框架为我的手机生成的 token 向我自己的手机发送消息。现在这是棘手的地方(在我看来)。 FirebaseInstanceIdService 扩展服务中有一个名为onTokenRefresh() 的方法。既然叫refresh,那么我假设它会改变。我想知道这个 token 是什么时候创建的,什么时候会改变?

如果它发生变化,假设我向带有 token “A”的设备发送消息,该设备目前处于离线状态,因此它将排队。现在,当设备上线时,它会将 token “刷新”为“B”。现在,由于消息应该被传递到 token “A”,因此消息将永远不会被传递。我该如何处理这种情况?

最佳答案

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

正如您指出的, token 可以更改,在这种情况下,将再次调用 onTokenRefresh() 方法。
刷新事件在某种程度上很少见,根本不要指望经常看到它。

当刷新 token 发生时,所有已“成功”发送(API 向您返回消息 ID)到旧 token 的消息都将被传递。

最后,即使在刷新之后,旧 token 仍会在短时间内工作,以允许应用将新 token 传送到其后端。

关于android - firebase的app token在什么时期发生变化,如何管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678248/

相关文章:

ios - 如何在 iPhone 中快速重播通知,如 whats app 或 iMessage?

java - 如何让用户在 firebase 中拥有自己的聊天室和 map 标记?

database - swift 。如何从 Firebase 数据库中选择一个随机用户?

angular - 显示从 firebase 到 ionic 的嵌套数据

android - 使可折叠工具栏自动折叠/展开

android - ADK 1.0 设备无法与 Jelly Bean 一起使用,为什么?

ios - 在 iOS 上模拟远程通知

java - AudioTrack WRITE_BLOCKING 与 WRITE_NON_BLOCKING

android - 在 ActionBar 上添加 Logo(图标)和应用程序名称?

ios - 像 WhatsApp 一样替换推送/本地通知