Обновленный обработчик сервисного работника продолжает запускаться на Android после обновления - PullRequest
0 голосов
/ 24 ноября 2018

Я использую 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, если это имеет какое-то значение.

...