Не удалось инициализировать состояние с сервисным работником в GCM для веб-приложения в Chrome
Я разрабатываю веб-приложение, которое использует GCM для push-уведомлений. Я следую этой документации - https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en. Это вопрос о последствиях этого вопроса, который я задал - https://stackru.com/questions/38018061/cannot-register-service-worker-and-initialize-push-notification-in-gcm-for-web-w?noredirect=1. У меня проблема с функцией initializeState в документации. Пожалуйста, смотрите мой код ниже.
Вот как я добавил сервисный рабочий скрипт.
I just created a service-worker.js empty file and pointed to this file in code to register service. Totally empty file.
Это мой код JavaScript
<script type="text/javascript">
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register("{{ url('js/service-worker.js') }}").then(initialiseState).catch(function(error){
alert('Unable to register service worker for notification')
});
} else {
alert('Your browser does not support service worker that is used to receive push notification');
}
function subscribe()
{
alert('Subscribed')
}
function unsubscribe()
{
alert('Unsubscribed')
}
// the problem is inside this function. This function is called after service worker registration
function initialiseState() {
if (!('showNotification' in ServiceWorkerRegistration.prototype)) {
alert("Notification is not supported in this browser")
return;
}
if (Notification.permission === 'denied') {
alert('Notifications are blocked')
return;
}
if (!('PushManager' in window)) {
alert('Push messaging is not supported in thiss browser');
return;
}
// Every code working until here. I already checked using else if to statement.
// We need the service worker registration to check for a subscription
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
//The problem is here. It is not alerting anything
alert('Ready to check')
});
}
</script>
Я прокомментировал в коде, чтобы выделить, где проблема. Что я знаю, так это то, что оно должно предупреждать, если оно работает. Так что это ничего не предупреждает. Поэтому я не могу делать другие шаги. Я проверил консоль, и она не показывает никаких ошибок. Разве это не работает, потому что мой service-worker.js пуст? Если нет, как я могу исправить мой код для работы?