我正在构建一个使用 Web 推送通知的渐进式 Web 应用程序,并希望避免向当前正在查看我的网站的桌面或移动设备上的用户显示通知。
我知道在处理推送事件时我的网站必须始终显示通知,但是如果我的网站已打开,我可以跳过显示通知吗?
在决定是否显示通知时也可以确定上述内容吗?
我正在构建一个使用 Web 推送通知的渐进式 Web 应用程序,并希望避免向当前正在查看我的网站的桌面或移动设备上的用户显示通知。
我知道在处理推送事件时我的网站必须始终显示通知,但是如果我的网站已打开,我可以跳过显示通知吗?
在决定是否显示通知时也可以确定上述内容吗?
事实证明,如果您的网站可见,您不必显示通知。
这可以按如下方式实现:
self.addEventListener('push', event => {
return clients.matchAll({ type: 'window' }).then(clients => {
for (let i = 0; i < clients.length; ++i) {
if (clients[i].visibilityState === 'visible')
return; // there is a visible window
}
// continue with showing a notification
});
});