Я регистрирую работника сервиса, используя следующий код. Теперь проблема, с которой я сталкиваюсь, заключается в том, что я действительно получаю объект Service Registration
, но этот объект активируется через несколько секунд.
Итак, есть ли способ получить объект Service Registration
только тогда, когдаоно активируется, потому что если объект службы не активирован, я не могу отправить сообщение, используя swReg.active.postMessage(..)
на Service Worker
немедленно
var verifyPermission = new Promise(function(resolve, reject) {
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
console.log('Notify.js -> Service Worker and Push is supported');
var dataUrl = document.getElementById('directUrl').value;
Notification.requestPermission(status => {
isNotificationAllow = status;
console.log('Notify.js -> Notification permission status:', status);
if(status === 'denied'){
reject(null);
}
navigator.serviceWorker.getRegistrations().then(registrations => {
if(registrations.length == 0){
navigator.serviceWorker.register(dataUrl)
.then(swReg => {
console.log('Notify.js -> Service Worker is registered', swReg);
if(swReg.active){
resolve(swReg);
// this gets failed swReg.active.postMessage(..)
}
else{
console.log("Not yet registered 1");
}
})
.catch(err => {
console.error('Notify.js -> Service Worker Error', err);
});
}else{
console.log("Notify.js -> Already registered service worker ",registrations[0]);
if(registrations[0].active)
resolve(registrations[0]);
else{
console.log("Not yet registered 2");
}
}
});
});
});
}else{
reject(null);
//alert('Notify.js -> Service Worker and Push is NOT supported');
}
});