通过Service Worker的Notification API

时间:2017-09-24 00:04:18

标签: javascript html5 service-worker

在我的日历应用程序中,我想在事件发生前X分钟发送通知。

我使用了服务工作者的通知API,如下所示:

我在index.html注册服务工作者。

// Registering my service worker
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js', {
      scope: '/'
    })
    .then(function(reg) {
      window.swReg = reg;
      console.log('registration succeed');
    }).catch(function(error) {
      console.log('Registration failed with ' + error);
    });
}

在我的应用程序的其他地方,我使用setTimeout来触发通知:

// Show notification at next event
setTimeout(() => {
  swReg.showNotification('Your event starts in 5mn!')
    .then(ev => {
       console.log(ev); // <= got undefined!
     });
}, delayBeforeNextEvent);

关于规范,MDN/showNotification#Syntax我应该能够通过已解决的承诺的NotificationEvent参数访问ev

但承诺立即得到解决,ev未定义。

对于实例,我必须在service-worker.js中定义一个事件监听器以使其正常工作,但我希望将此逻辑保留在上面的代码旁边。

self.addEventListener('notificationclick', ev => {
  ev.notification.close();
});

有什么想法吗?

0 个答案:

没有答案