PWA。服务工作者通知多次出现

时间:2018-03-02 15:59:24

标签: javascript html google-chrome progressive-web-apps

我有运行服务工作者的网站。我可以打印它工作得很好的通知,但我只需要显示一次通知。但是每次刷新页面时,每次都会显示相同的消息。是否可以只显示一次通知? 有我的代码:

weeks = [x for x in range(max(sales['WEEK']+1),53)]
padding = pd.DataFrame(np.zeros((53max(sales['WEEK']+1),len(sales.columns))),index=weeks)

1 个答案:

答案 0 :(得分:2)

可以在服务工作者执行的上下文中显示通知。当服务工作者通过push event“醒来”时,通常会这样做。

还可以在网页的上下文中显示通知。这样做根本不需要服务工作者。如果您的用例在用户授予通知权限后立即显示单个通知,则可以使用相同的通知和权限API,而无需涉及服务工作者。

这是一个说明如何做到这一点的示例。它有点欺骗,因为它不会在第一次访问时签入,而只会在'granted'的通知权限发生变化时显示通知。因为这通常只发生一次而不是每次访问,所以它应该完成同样的事情。

if ('Notification' in window && 'permissions' in navigator) {
  function showNotification() {
    const title = 'The title';
    const options = {
      body: 'The body.',
    };
    new Notification(title, options);
  }

  navigator.permissions.query({name: 'notifications'}).then(status => {
    if (status.state === 'prompt') {
      status.onchange = () => {
        if (status.state === 'granted') {
          showNotification();
        }
      };

      document.querySelector('#notification')
        .addEventListener('click', () => Notification.requestPermission());
    }
  });  
}
<button id="notification">Enable Notification</button>