Я использую register-service-worker для обработки обнаружения, когда происходит обновление PWA.Источник работника службы: минимальный .
Мой код обработки такой:
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
ready() {
console.log(
'App is being served from cache by a service worker',
);
},
cached() {
console.log('Content has been cached for offline use.');
},
updated() {
console.log('New content is available; please refresh.');
store.commit("updateAvailable");
},
offline() {
console.log('No internet connection found. App is running in offline mode.');
},
error(error) {
console.error('Error during service worker registration:', error);
},
});
}
store.commit("updateAvailable");
показывает модальное сообщение, указывающее пользователю обновить, гдеОдин щелчок по кнопке обновления запускает location.reload(true)
.Я также попробовал location.reload()
.
На рабочем столе проблем нет.На андроиде в браузере chrome выскакивает уведомление об обновлении, даже если я обновляю / продолжаю обновлять.Мне нужно изменить местоположение URL-адреса на другой веб-сайт, а затем вернуться в приложение, чтобы обновление прошло, и уведомление перестало появляться.
Я добавил механизм обновления в минимальном веб-приложении (в ветке освежительного теста) Я имею право воспроизвести проблему.Проблема может быть воспроизведена в моем Android Chrome:
- Развертывание приложения
- Запуск приложения на Android Chrome
- Внесение минимальных изменений в приложение и
- На Android Chrome обновите страницу
Предупреждение «Приложение обновлено, обновится» будет отображаться и будет отображаться при каждом обновлении.Проблема не возникает на рабочем столе, достаточно одного обновления для обновления приложения.
Существует ли какая-либо причина, по которой работники службы ведут себя по-разному на мобильных устройствах / Android?Могу ли я попытаться решить проблему?Я уже пытался вызвать skipWaiting()
в сервисном сервисе перед обновлением страницы.
Я использую chrome 69.0.3497.100 / Android 7.0.0, если это имеет какое-то значение.