【问题标题】:how to refresh FCM token with js如何使用 js 刷新 FCM 令牌
【发布时间】:2020-09-19 00:26:39
【问题描述】:

我正在为我的 React 网络推送通知设置 FCM,它正在正确执行所有操作,除了我不知道如何在令牌过期时刷新令牌 我有一个 FCMListener 函数,它的代码如下

    navigator.serviceWorker
      .register("/static-files/firebase-messaging-sw.js")
      .then((registration) => {
        firebase.initializeApp(settings.getConfig().FIREBASE_CONFIG);
        const messaging = firebase.messaging();
        messaging.useServiceWorker(registration);

        try {
          messaging
            .requestPermission()
            .then(() => {
              return messaging.getToken();
            })
            .then((token) => {
              let topic = `${userInfo.is_host ? "host" : "guest"}`;
              if (token) {
                this.subscribeToTopic(topic, token);
                this.sendTokenToServer({
                  os: "web",
                  push_token: token,
                });
              } else {
                messaging.onTokenRefresh(() => {
                  messaging
                    .getToken()
                    .then((refreshedToken) => {
                      this.subscribeToTopic(topic, token);
                      this.sendTokenToServer({
                        os: "web",
                        push_token: refreshedToken,
                      });
                    })
                    .catch((err) => {
                      console.log("Unable to retrieve refreshed token ", err);
                    });
                });
              }
            });
        } catch (error) {
          if (error.code === "messaging/permission-blocked") {
            console.log("Please Unblock Notification Request Manually");
          } else {
            console.log("Error Occurred", error);
          }
        }
        messaging.onMessage((payload) => {
          console.log("Notification Received", payload);
          alert(payload.notification.body);
        });
      });
  };
}

因为我不知道如何使 firebase 令牌过期,也无法测试令牌过期时会发生什么我不知道我尝试获取 refreshedToken 的部分是否正确,或者即使这是获取刷新令牌的正确方法。我真的很感激任何提示和建议

【问题讨论】:

    标签: javascript reactjs firebase firebase-cloud-messaging


    【解决方案1】:

    出于测试目的,您可以通过 API 调用 deleteToken API 删除 FCM 令牌。完成此操作后,重新加载页面,您的 onTokenRefresh 应该触发。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 2017-05-10
      • 2017-01-20
      • 2016-09-28
      • 2021-06-19
      相关资源
      最近更新 更多