我在我的网站中使用 FCM 推送通知,我希望用户可以在他或她点击推送通知时进入我的网站。请注意,用户可能在其他应用程序或其他浏览器选项卡中,我希望当用户收到 fcm 通知时,用户将能够通过单击 Firefox 浏览器中的通知进入我的网站。出于这个原因,我使用了 service worker 中可用的 notificationclick 事件。我使用的代码是这样的:
self.addEventListener('notificationclick', event => {
console.log('On notification click: ', event.notification.tag);
event.notification.close();
// This looks to see if the current is already open and
// focuses if it is
event.waitUntil(
clients
.matchAll({
type: 'window'
})
.then(clientList => {
for (let i = 0; i < clientList.length; i++) {
const client = clientList[i];
if (client.url === '/' && 'focus' in client) return client.focus();
}
if (clients.openWindow) return clients.openWindow('/');
})
);
});
它不会打开窗口或专注于我的网站选项卡。为了调试代码,我打印了 clientList 变量,它是一个长度为零的数组。
我在浏览器中得到的错误是这个
On notification click:
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable firebase-messaging-sw.js:92
上面的错误是指这行代码:
event.waitUntil(
操作系统:Mac firefox:63.0.3 reactjs:16.2.0