Service install 'install' не работает на iOS, но работает на Android - PullRequest
0 голосов
/ 31 января 2019

У меня странная ситуация, и мне нужна помощь - мне не удалось найти какую-либо информацию об этом конкретно.

Поэтому я пытаюсь кэшировать веб-сайт в автономном режиме с помощью сервисных работников.У меня это работает на рабочем столе Windows и Android Chrome.Однако на iOS iPhone 12.1.2 это не работает.У меня был iPhone на отладке и я смог увидеть консоль.Видимо ошибок нет и сервисный работник регистрируется.См. Код ниже:

JS

if ('serviceWorker' in navigator) {
    console.log('Service Worker supported')
    window.addEventListener('load', function(){
        navigator.serviceWorker
            .register('../sw_cache.js')
            .then(function(reg){
                console.log('Service Worker: Registered')
            })
            .catch(function(err){
                console.log('Service Worker: Error '+err)
            })
    })
}

Так что все, что, кажется, работает, я вижу журнал консоли на отладке iOS.Но по какой-то причине файл sw_cache.js не отвечает.Я попытался вставить консольный журнал и даже попытаться поймать.

Смотрите мое событие установки здесь:

sw_cache.js

var cacheName = 'v1';

var cacheAssets = [... list of assets ... ]

self.addEventListener('install', function(e){
    console.log('Service Worker: Installed');
    e.waitUntil(
        caches
            .open(cacheName)
            .then(function(cache){
                console.log('Service Worker: Caching Files');
                cache.addAll(cacheAssets)
            })
            .then(function(){
                self.skipWaiting();
            })
    )
})

// Call Activate Event
self.addEventListener('activate', function(e){
    console.log('Service Worker: Activated');
    // Remove unwanted caches
    e.waitUntil(
        caches.keys().then(function(cacheNames){
            return Promise.all(
                cacheNames.map(function(cache){
                    if (cache !== cacheName){
                        console.log('Service Worker: Clearing Old Cache');
                        return caches.delete(cache);
                    }
                })
            )
        })
    );
})

// Call Fetch Event
self.addEventListener('fetch', function(event) {
  event.respondWith(caches.match(event.request));
});

Снимок экрана - Доказательствоработника службы регистрации на iOS

Структура папки: Пример структуры моей папки здесь Все мои пути относительны (если это имеет какое-либо отношение к чему-либо?)

Кто-нибудь знает, почему он будет работать на Android, а не на iOS?Что-то не так с тем, что я написал?

Спасибо.

...