IOS 12上的服务工作人员未在脱机模式下工作

IOS 12上的服务工作人员未在脱机模式下工作,ios,caching,service-worker,offline,progressive-web-apps,Ios,Caching,Service Worker,Offline,Progressive Web Apps,我正在尝试在iOS/Android操作系统上制作一个PWA,使其在在线/离线模式下都能工作,到目前为止,我已经准备好了我的服务人员,并在Android上工作,服务离线页面是否正确,但在iOS上它根本不工作,我可以将我的PWA添加到主屏幕,它可以使用我所有的IndexedDB方法,但一旦我离线,它告诉我Safari没有互联网连接,我想我的服务人员的安装方法可能有问题,但我不知道如何在iphone上检查,因为我是在linux上开发的,下面是我的服务人员代码,它在android上正常工作,但在IOS上

我正在尝试在iOS/Android操作系统上制作一个PWA,使其在在线/离线模式下都能工作,到目前为止,我已经准备好了我的服务人员,并在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);
            }
          })
        );
      })
    );
  });
})();

这个服务人员有什么问题吗?有没有办法调试IOS service worker安装?与chrome开发工具类似?

Nevermind,正如您在我的代码中看到的,我在缓存列表中复制了一个条目,一旦我摆脱it服务人员按预期开始工作,我想这是我学到的教训。我在这里面临着同样的问题,我没有重复的条目。你能像chrome开发工具一样调试iOS pwa吗?我也没有看到我的服务人员加载到ipad safari上。。有人知道如何调试吗?我也有同样的问题。我没有mac电脑可用于访问任何类型的开发工具,以查看软件是否在我的iPad上运行(软件仍在“实验性WebKit功能”中列出),有人知道这一点吗?我正在使用workbox,服务人员似乎注册了,但被卡住了。。从来没有真正缓存任何东西。在Android上,一切都按预期进行。。
{% 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 %}