Я пытаюсь заставить PWA работать в обоих режимах онлайн / офлайн на обеих ОС iOS / Android, пока я уже подготовил своего сервисного работника и работаю на Android, правильно ли работает автономная страница сервиса, но на IOS этовообще не работает, я могу добавить свой PWA на домашний экран, и он работает всеми методами IndexedDB, но когда я перехожу в автономный режим, он говорит мне, что у Safari нет подключения к Интернету, я думаю, что может быть проблема с методом установкимой сервисный работник, но я понятия не имею, как проверить это на iphone, так как я занимаюсь разработкой для Linux, вот мой код сервисного работника, который работает нормально на Android, но не на IOS.
(function() {
'use strict';
var filesToCache = [
'/app/inicio',
'/app/mapa',
'/app/visita',
'/app/sincronizacion',
'/static/base/bs4/js/jquery-3.1.1.min.js',
'/static/base/bs4/css/heineken-bs.min.css',
'/static/base/bs4/js/bootstrap.min.js',
'/static/base/bs/js/bootstrap-switch.min.js',
'/static/base/fontawesome-5.3.1/js/all.min.js',
'/static/base/js/chainedfk.js',
'/static/base/multiselect/js/jquery.multi-select.js',
'/static/base/js/common.js',
'/static/base/js/jquery.numeric.min.js',
'/static/base/bs4/js/popper.min.js',
'/static/base/bs/css/bootstrap-switch.min.css',
'/static/base/imgs/favicon/favicon.ico',
'/static/base/imgs/favicon/ms-icon-144x144.png',
'/static/base/leaflet-1.3.4/leaflet.css',
'/static/base/leaflet-1.3.4/leaflet.js',
'/static/base/bs4/css/map-styles.css',
'/static/base/leaflet-usermarker-master/src/leaflet.usermarker.js',
'/static/base/leaflet-usermarker-master/src/leaflet.usermarker.css',
'/static/base/Leaflet.markercluster-master/dist/leaflet.markercluster-src.js',
'/static/base/Leaflet.markercluster-master/dist/MarkerCluster.css',
'/static/base/leaflet-draw/src/leaflet.draw.css',
'/static/base/leaflet-draw/src/Leaflet.draw.js',
'/static/base/drag/jquery.sortable.min.js',
'/static/base/date-time/js/moment-locale.min.js',
'/static/base/date-time/js/bootstrap-datetimepicker.min.js',
'/static/base/date-time/css/bootstrap-datetimepicker.min.css',
'/static/base/select-picker/css/select-picker.css',
'/static/base/select-picker/js/select-picker.min.js',
'/static/base/js/turf.min.js',
'/static/base/js/util_v1.js',
'/static/base/js/util_db_v1.js',
'/static/base/localForage/localforage.min.js',
'/static/base/localForage/localforage-getitems.js',
'/static/base/localForage/localforage-setitems.js',
'/static/base/localForage/localforage-startswith.js',
'/static/base/js/progressbar.js',
'/static/base/js/util_db_v1.js',
'/static/base/js/moment.min.js',
'/static/base/imgs/puntos/rojo.png',
'/static/base/imgs/puntos/verde.png',
'/static/base/imgs/puntos/amarillo.png',
'/static/base/imgs/puntos/azul.png',
'/static/base/leaflet.offline/dist/bundle.js',
'/static/base/imgs/favicon/favicon-16x16.png',
'/static/base/imgs/favicon/favicon-32x32.png',
'/static/base/imgs/favicon/favicon-96x96.png',
'/static/base/imgs/favicon/apple-icon-57x57.png',
'/static/base/imgs/favicon/apple-icon-60x60.png',
'/static/base/imgs/favicon/apple-icon-72x72.png',
'/static/base/imgs/favicon/apple-icon-76x76.png',
'/static/base/imgs/favicon/apple-icon-114x114.png',
'/static/base/imgs/favicon/apple-icon-120x120.png',
'/static/base/imgs/favicon/apple-icon-144x144.png',
'/static/base/imgs/favicon/apple-icon-152x152.png',
'/static/base/imgs/favicon/apple-icon-180x180.png',
'/static/base/imgs/favicon/android-icon-192x192.png',
];
var staticCacheName = 'pages-cache-v5';
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(staticCacheName)
.then(function(cache) {
return cache.addAll(filesToCache);
})
);
});
self.addEventListener('fetch', function(event) {
if (event.request.url.match( '^.*(\/app\/).*$' ) || event.request.url.match( '^.*(\/app/inicio\/).*$' ) || event.request.url.match( '^.*(\/app/sincronizacion\/).*$' ) || event.request.url.match( '^.*(\/app/mapa\/).*$' ) || event.request.url.match( '^.*(\/app/visita\/).*$' ) || event.request.url.match( '^.*(\/static\/).*$' )){
event.respondWith(
caches.match(event.request).then(function(response) {
if (response) {
return response;
}
return fetch(event.request).then(function(response) {
if (response.status === 404) {
return caches.match('internet-error.html');
}
return caches.open(staticCacheName).then(function(cache) {
if (event.request.url.indexOf('test') < 0) {
cache.put(event.request.url, response.clone());
}
return response;
});
});
}).catch(function(error) {
//console.log('Error, ', error);
return caches.match('internet-error.html');
})
);
}else{
false
}
});
self.addEventListener('activate', function(event) {
console.log('Activando service worker...');
var cacheWhitelist = [staticCacheName];
event.waitUntil(
caches.keys().then(function(cacheNames) {
return Promise.all(
cacheNames.map(function(cacheName) {
if (cacheWhitelist.indexOf(cacheName) === -1) {
console.log("Eliminando"+cacheName);
return caches.delete(cacheName);
}
})
);
})
);
});
})();
, и этоскрипт, который активирует такого сервисного работника на index.html
{% if browser_mobile %}
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register("{% url 'sw.js' %}")
.then(function(registration){
console.log('Registré el Service Worker: Paso a redirección',registration.scope);
if (window.matchMedia('(display-mode: standalone)').matches) {
var url = "{% url 'autentificacion:inicio' %}";
window.location = url
}else{
console.log("This is NOT! running as standalone.");
}
})
.catch(function(err){
console.log('Falló la instalación del Service Worker: ', err);
});
});
}
{% else %}
Что-то не так с этим сервисным работником?Есть ли способ отладки установки службы IOS?похож на инструменты chrome-dev?