【问题标题】:#AskFirebase FCM web push token invalidation time#AskFirebase FCM 网络推送令牌失效时间
【发布时间】:2019-10-24 11:38:13
【问题描述】:

当用户离线时间过长时,使用 Firebase JS SDK 生成的 FCM 令牌是否会过期?
例如调用如下代码后:

messaging.getToken().then((currentToken) => {
  if (currentToken) {
    sendTokenToServer(currentToken);
    updateUIForPushEnabled(currentToken);
  } else {
    // Show permission request.
    console.log('No Instance ID token available. Request permission to generate one.');
    // Show permission UI.
    updateUIForPushPermissionRequired();
    setTokenSentToServer(false);
  }
}).catch((err) => {
  console.log('An error occurred while retrieving token. ', err);
  showToken('Error retrieving Instance ID token. ', err);
  setTokenSentToServer(false);
});

服务器拥有客户端令牌。如果用户清除了站点数据,客户端就不再知道这个注册,也没有人更新服务器客户端已经消失了。那么它是否曾经使令牌无效?如果是这样,失效需要多长时间?我知道 FCM 最多可以保存 28 天的消息,所以我假设不会少于这个时间?

【问题讨论】:

    标签: javascript firebase firebase-cloud-messaging


    【解决方案1】:

    令牌可能因多种原因而失效。根据documentation

    注册令牌可能会在以下情况下发生变化:

    • Web 应用删除注册令牌。
    • 用户清除浏览器数据。在这种情况下,调用 getToken 来获取新的令牌。

    文档没有说明过期时间,但您的代码应准备好通过检测更改并将新令牌发送到后端来处理这些情况。

    【讨论】:

    • 感谢您的快速回复!我阅读了文档。我想知道的是在服务器端,如果客户端在 XXX 时间后离线,Web 令牌是否会失效,或者在主动删除令牌之前它们是否正常运行?
    • 令牌没有声明的过期时间。您必须在发送消息时检查错误消息,以确定令牌是否已失效。 firebase.google.com/docs/cloud-messaging/…
    • 因此对于 webpush,令牌获取错误的唯一方法是主动删除它。这意味着我不能依赖错误消息来检测将要传递多少消息。那么您对如何让我的客户知道有多少消息可能会被传递有什么建议吗?我使用云功能作为服务器,所以我不能使用 XXMP 来获取交货收据。也许我可以设置一个 setBackgroundMessageHandler 并为每次消息传递调用服务器。听起来可以吗?
    • 我不确定您要做什么。请编辑问题以更具体地解释您用于发送消息的过程,以及您遇到的具体问题。该文档没有对令牌过期做出任何声明,因此我认为您不能指望这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多