在我的日历应用程序中,我想在事件发生前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();
});
有什么想法吗?