PWA на iOS при повторном запуске перенаправления на дом - PullRequest
0 голосов
/ 20 апреля 2020

Мое приложение 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 , Но я не уверен, что это правильный подход.

...