在 Chromium 关于服务人员的页面上,有人指出
iOS 上的 Chrome 不支持 Service Worker。
我假设它可以使用一些cordova插件交付给iOS。有没有其他方法可以在 iOS 设备上使用 Service Worker?
我担心在 iOS 上发布新版本和 Cordova 新版本之间的时间。
有谁知道 iOS 上的 Chrome 将来是否会支持服务人员?:)
在 Chromium 关于服务人员的页面上,有人指出
iOS 上的 Chrome 不支持 Service Worker。
我假设它可以使用一些cordova插件交付给iOS。有没有其他方法可以在 iOS 设备上使用 Service Worker?
我担心在 iOS 上发布新版本和 Cordova 新版本之间的时间。
有谁知道 iOS 上的 Chrome 将来是否会支持服务人员?:)
尽管 Ian 的答案在发布时(04.2015)已经很好了,但这个问题成为许多对服务工作者和渐进式 Web 应用程序感兴趣的人的重要切入点,现在答案范围更广了。
30.03.2018 : Service Worker 随 Safari 11.1 一起提供。好工作!https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.html
20.12.2017:在 Safari 技术预览版 46 中默认启用服务工作者 https://webkit.org/blog/8042/release-notes-for-safari-technology-preview-46/
04.08.2017 : 正式工作正在进行中:) https://webkit.org/status/#specification-service-workers
07.2017 : webkit-dev上的更多积极信号:
在过去的几年里,来自 WebKit 团队的 Apple 工程师大量参与了 ServiceWorkers 规范的讨论。我们对规范的许多担忧已经得到解决,特别是对于通常不会超出使用它们的页面范围的 Fetch 服务工作者。虽然我们还没有做任何实现工作,但本例中的“考虑中”是字面意思。我们实际上正在考虑它。
06.2016 : 根据Jake Archibald 的“ServiceWorker 准备好了吗?” iOS(Safari)的当前状态是:
请注意,它会影响 iOS 上的所有浏览器 - 由于 Apple 的限制,iOS 上的 Chrome 使用 WKWebView - 与 Safari 相同的渲染引擎,它只是围绕它的一个小包装,因此仅限于当前功能。
跟踪 Service Worker 当前状态最受认可的地方是Jake Archibald 的“ServiceWorker 准备好了吗?” .
还有另一个资源可以收集这些信息,提供有关各种 Chromium 构建的更多信息,这些构建在中国最流行并涵盖更多细节:https ://ispwaready.toxicjohann.com/
在 Nolan Lawson 的文章Safari 是新的 IE (06/2015)之后,引发了关于 Apple 参与现代网络功能的广泛辩论,其主要观点是
近年来,苹果的网络战略可以用“仁慈的忽视”来形容。</p>
对方的主要论点是 Service Worker 和其他离线/PWA 功能不是以客户为中心的——这是 Safari 开发的重点。
有些人甚至更加激进,例如Greg Blass 在他的文章 (07/2017)中指出
Apple 将网络应用程序视为二等公民,因为它们不像应用程序商店中的本地应用程序那样赚钱。
共同点是,Apple 在开发可改善 Web 体验的功能方面落后于其他供应商(Chrome、Firefox、Edge),但修复严重错误的速度也非常缓慢,导致某些功能在技术上无法使用。
我不知道 iOS 上的 Chrome 是否或何时会支持 Service Worker,但今天使用 Cordova 绝对有可能。
npm 上的Service Worker 插件可让您在 iOS 上的 Cordova 应用程序中使用 API。
我写了一篇关于这个主题的文章呼吁苹果:
它被几个关键人物转发,然后发布在黑客新闻上,并继续获得一些不错的推特活动。一周后,他们开始对其进行开发。所以——敬请期待,它来了!
Service Worker 在 Safari 11.1 中可用,该版本于 2018 年 3 月 29 日随 iOS 11.3 和 macOS 10.13.4 一起发布:
笔记:
回答@mcl 如果您在服务人员中更改代码:
self.addEventListener( 'install', function(){
return self.skipWaiting( );
});
到以下代码,它应该可以工作。我也更改了所有变量,所以只需复制粘贴即可。
self.addEventListener('install', event => {
console.log('Attempting to install service worker and cache static assets');
event.waitUntil(
caches.open(FILES_CACHE)
.then(cache => {
return cache.addAll(urlsToCache);
})
);
});
最后,Apple 在他们的 TP 中增加了对 service worker 的支持。您可以在此处阅读有关 safari 的 PWA 支持的更多信息
这是服务人员的详细支持信息 http://ispwaready.toxicjohann.com/