Возможно, вы что-то не так сделали с вашим serviceWorkerRegistration
процессом,
. Также вы должны заметить, что getRegistration()
возвращает обещание, которое разрешает либо serviceWorkerRegistration object
, либо undefined
, поэтому сделайте проверку до того, какуведомление о вызове
showNotification() {
navigator.serviceWorker.getRegistration()
.then( function(reg){
if(reg) {
reg.showNotification('finish button clicked');
} else {
console.log('GOT undefined');
}
});
}
См. serviceWorkerRegistration в Angular
Чтобы увидеть текущее состояние вашего сервис-работника, вы можете получить следующее:
navigator.serviceWorker.register('/sw.js', {scope: '/'})
.then(function (registration) {
var serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
} else if (registration.waiting) {
serviceWorker = registration.waiting;
} else if (registration.active) {
serviceWorker = registration.active;
}
if (serviceWorker) {
console.log("ServiceWorker phase:", serviceWorker.state);
serviceWorker.addEventListener('statechange', function (e) {
console.log("ServiceWorker phase:", e.target.state);
});
}
}).catch(function (err) {
console.log('ServiceWorker registration failed: ', err);
});