Service workers and iOS / Safari

2019-01-17 03:06发布

问题:

On Chromium's page about service workers there's noted that

Service Workers are not supported by Chrome on iOS.

I assume that it can be delivered to iOS using some cordova plugins. Is there any other way to use Service Workers on iOS devices?
I'm worried about time between shipping new version on iOS and new version of cordova.

Does anyone know if Chrome on iOS is going to support service workers in the future? :)

回答1:

Although Ian's answer was great by the time it was posted (04.2015), this question became important point of entry for a lot people interested in service workers and Progressive Web Apps and answer is much broader now.

Feedback from Apple

30.03.2018: Service workers are shipped with Safari 11.1. Good job! https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.html

20.12.2017: Service workers enabled by default in Safari Technology Preview 46 https://webkit.org/blog/8042/release-notes-for-safari-technology-preview-46/

04.08.2017: Work officially in progress :) https://webkit.org/status/#specification-service-workers

07.2017: More positive signals on webkit-dev:

Apple engineers from the WebKit team have been heavily involved in ServiceWorkers spec discussions over the past few years. Many of our concerns with the spec have been addressed, especially for Fetch service workers which generally don't run beyond the scope of pages that use them. While we have not done any implementation work, the "under consideration" in this case is meant literally. We actually are considering it.

06.2016: According to Jake Archibald's 'Is ServiceWorker ready?' current status of iOS (Safari) is:

Under consideration, Brief positive signals in five year plan.

Please be aware, that it affects all browsers on iOS - due to Apple's limitations, Chrome on iOS is using WKWebView - the same rendering engine as Safari, and it's only a tiny wrapper around it, so it's limited to current functionalities.

Resources

The most recognized place of tracking current status of service worker is Jake Archibald's 'Is ServiceWorker ready?'.

There's another resource that gathers these information, providing more information on various Chromium builds, most popular in China and covering some more details: https://ispwaready.toxicjohann.com/

Controversies

Wide-scale debate about Apple participation in modern web features has been triggered after Nolan Lawson's article Safari is the new IE (06/2015) whose main point was that

In recent years, Apple’s strategy towards the web can most charitably be described as “benevolent neglect.”

The main argument of the opposing party was that service worker and the rest of offline/PWA features are not customer-centric - the focus of Safari development.

Some people are even more radical like Greg Blass in his article (07/2017) who states that

Apple treats web apps like second class citizens because they don’t generate money like native apps in the app store.

Common point is that Apple is falling behind other vendors (Chrome, Firefox, Edge) with developing features that'll improve web experience, but also has very slow pace of fixing critical bugs that makes some features technically unusable.



回答2:

I don't know if or when Chrome on iOS will support Service Worker, but it is definitely possible today with Cordova.

The Service Worker plugin on npm will let you use the API in Cordova apps on iOS.



回答3:

I wrote an article calling out Apple on the topic:

https://m.phillydevshop.com/apples-refusal-to-support-progressive-web-apps-is-a-serious-detriment-to-future-of-the-web-e81b2be29676

It got retweeted by a couple key people, then posted on hacker news, and continued to get some good twitter activity. A week later, they started development on it. So - stay tuned, it's coming!



回答4:

Service worker is available in Safari 11.1, which shipped March 29, 2018 with iOS 11.3 and macOS 10.13.4:

https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.html

Note:

  • Service Worker + Cache API are both supported (Cache API is actually a pre-requisite for Service Worker support)
  • Some noteworthy problems with Apple's implementation of Service Worker: https://medium.com/@firt/pwas-are-coming-to-ios-11-3-cupertino-we-have-a-problem-2ff49fd7d6ea
  • No "Add to Home Screen" prompt
  • No Push API
  • No Background Sync


回答5:

Finally, Apple has added support for service worker in their TP. You can read more about safari's PWA support here

https://medium.com/awebdeveloper/progressive-web-apps-pwas-are-coming-to-a-safari-near-you-216812aba5a

Here is the service worker detailed support info http://ispwaready.toxicjohann.com/



回答6:

Just upgraded to High Sierra 13.4 which comes with Safari 11.1

Tried a PWA demo site I know of with Safari 11.1

https://beebole.github.io/mobile-app-demo/

Disconnected my wifi, hard reloaded the page

Got the message

You have no internet, try our offline reading list !!!!

Any thoughts