2016-03-08 59 views
2

我正在構建一個使用Web推送通知的漸進式Web應用程序,並希望避免向正在查看我的網站的桌面或移動設備上的用戶顯示通知。如果我的網站是前臺並關注的,我是否需要針對推送通知顯示通知?

我知道,我的網站必須始終表明,當一個推送事件被處理的通知,但我可以跳過呈現出通知,如果我的網站是開放的,在前面和具有焦點?

也就是可以確定上面的東西決定是否顯示通知時?

回答

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 
    }); 
}); 
+0

我成功地使用這個直到最近;現在我看到奇怪的'無法執行'ExtendableEvent'上的'waitUntil':事件處理程序已經完成。 - 在clients.matchAll.then.clients'錯誤,除了「此網站已在後臺更新」。通知。 –

+0

你可以用你正在使用的代碼片段在crbug.com上提出問題嗎?這相當令人驚訝! – owencm

相關問題