【发布时间】: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