Я регистрирую работника службы, используя заголовок Service-Worker-Allowed со значением '/' и указав область действия при регистрации.
Регистрация ПО:
navigator.serviceWorker.register ('/ myapp / js / serviceWorker.js', {scope: '/'})
^ Это успешно.
Обслуживание S / W:
res.setHeader ('Service-Worker-Allowed', '/');
Рабочий процесс выглядит примерно так: myapp не вызывается напрямую, а выполняется за кулисами, когда пользователь не видит фактический URL.
Пользователь переходит на
www.domain.com / otherapp? Callmyapp = true
и негласно myapp www.domain.com/myapp
инициируется, когда я выполняю вышеуказанные регистрации скорневая область.
Когда пользователь перейдет на
www.domain.com / otherapp /thingelse & myapp = false
myapp isнедоступен для взаимодействия с пользователем.
Раньше (без использования корневой области видимости) сервисный работник получал избыточность, но теперь это не так.Однако он помечен как удаленный.
Я не получаю никакого события push после этого перенаправления.
serviceWorker.js
self.addEventListener("push", function (event) {
console.log('sw push event');
if (event.data) {
const notificationData = JSON.parse(event.data.text());
self.registration.showNotification(notificationData.title, notificationData);
}
});
Из того, что я понимаю с областями действия, еслия регистрирую сервисного работника с корневой областью видимости, он все еще должен быть доступен для получения push-события и не помечен как удаленный.
Я вижу много постов вокруг сервисного работника и угловых, стоит упомянуть, что myapp является старой школой / ваниль / пыль JS, в то время как otherapp является угловым.
ОТВЕТ:
Проблема была в том, что другое приложение не подписалосьвсе работники сферы обслуживания.Только если бы я знал.: / Мне потребовалось некоторое время для отладки и вывода из журналов даже после явного кэширования файлов myApp.