Я пытаюсь реализовать push-уведомление для Интернета. При попытке проверить, что веб-приложение погоды открыто, firefox бросает странную ошибку на обслуживающего работника. И он отлично работает на хроме.Проблема с клиентом для рабочих рабочих служб в Firefox - уведомление о веб-нажатии
«Служебный рабочий событие waitUntil() прошло обещание, которое отклонено с помощью« NotSupportedError: Operation не поддерживается ».»
Если я установил 'includeUncontrolled' в false, оба firefox и chrome возвращают 'windowClients' пустой массив. Не обнаруживать страницу.
Вот мой обработчик события толчок, 'clients.matchAll' является линия 50.
// Push Notification Event Handler
self.addEventListener('push', function(event) {
// Push Received
event.waitUntil(
// Check app page open
self.clients.matchAll({ // Line 50
includeUncontrolled: true, // Error occuring when enabling this
type: 'window'
})
.then(function(windowClients) {
// If no page instances show notification
if (!windowClients.length) {
// Get subscription key to call api
return self.registration
.pushManager
.getSubscription()
.then(function(subscription) {
if (subscription) {
// Get push message data
var token = encodeURIComponent(String(subscription.endpoint).split('/').pop());
var url = 'api/push/data?token=' + token + '&type=' + getPushDeviceType();
return self.fetch(url, {credentials: 'include'})
.then(function(response) {
if (response.status === 200) {
return response.json()
.then(function(data) {
if (data) {
// Display notification
return self.registration
.showNotification('App Notifications', {
'body': data.msg,
'icon': data.img,
'tag': 'app'
});
} else {
return;
}
});
} else {
return;
}
});
} else {
return;
}
});
} else {
return;
}
})
);
});
Firebug Скриншот
Работает ли это в Chrome? – Salva
Кстати, вы можете преобразовать все эти '} else {return; } 'в ранние возвращения:' if (! condition) {return; } 'для уменьшения уровня отступов и повышения удобочитаемости кода. – Salva
@ Salva. Да, его рабочий хром. n спасибо :) – Dino