Мое приложение PWA на iOS значок рабочего стола зависает при повторном запуске.
Мое приложение в React использует последнюю версию CRA со стандартными настройками Workbox для работников сферы обслуживания и кэширования. За исключением ограничений iOS для PWA / SW, он отлично работает, если сохранить значок на рабочем столе и вести себя как собственное приложение.
function registerValidSW(swUrl, config) {
navigator.serviceWorker
.register(swUrl)
.then((registration) => {
registration.onupdatefound = () => {
const installingWorker = registration.installing;
if (installingWorker === null) {
return;
}
installingWorker.onstatechange = () => {
if (installingWorker.state === 'installed') {
if (navigator.serviceWorker.controller) {
console.log(
'New content is available and will be used when all ' +
'tabs for this page are closed.'
);
if (config && config.onUpdate) {
config.onUpdate(registration);
}
} else {
console.log('Content is cached for offline use.');
if (config && config.onSuccess) {
config.onSuccess(registration);
}
}
}
};
};
})
.catch((error) => {
console.error('Error during service worker registration:', error);
});
}
Проблема заключается в том, что приложение свернуто, когда оно находится в другом месте. чем домашняя страница, а затем через некоторое время перезапускается (iOS unload), он зависает, скорее всего, из-за недопустимого состояния Redux.
Как определить, что значок на рабочем столе перезапускается и перенаправляет на домашнюю страницу, чтобы я можно очистить состояние и запустить fre sh? По сути, чтобы заставить его вести себя так же, как при запуске после его удаления (смахивания) в последней iOS 13.x.
Я почти уверен, что смогу справиться с этим в vanilla service worker, выбрав Workbox , Но я не уверен, что это правильный подход.