我正在构建一个使用网络推送通知的渐进式网络应用程序,并希望避免向目前正在查看我网站的桌面或移动设备上的用户显示通知。
我知道我的网站在处理推送事件时必须始终显示通知,但如果我的网站处于打开状态,我是否可以跳过显示通知,如上所述并且有焦点?
在决定是否显示通知时,还可以确定上述内容吗?
答案 0 :(得分:4)
事实证明,如果您的网站可见,则无需显示通知。
这可以实现如下:
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
});
});