У меня странная ситуация, и мне нужна помощь - мне не удалось найти какую-либо информацию об этом конкретно.
Поэтому я пытаюсь кэшировать веб-сайт в автономном режиме с помощью сервисных работников.У меня это работает на рабочем столе 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?Что-то не так с тем, что я написал?
Спасибо.