上面检测的每一项,都对应 PWA 规范中定义的一个 Web API。
为什么各家支持不一样?PWA 不是"一个东西",是一组技术的统称。Service Worker、Web App Manifest、Push API、Background Sync 都是各自独立的规范,各浏览器按自己的节奏实现。
iOS Safari 为什么拖后腿?苹果对 PWA 的态度一直很暧昧。Safari 支持 Service Worker 和 Manifest,但限制缓存上限、定期清理、不支持推送通知、不支持后台同步。因为 PWA 绕过了 App Store 的分发和抽成。
国内浏览器呢?微信内置浏览器、各类国产浏览器对 Service Worker 支持参差不齐。微信小程序本质上是 PWA 的"中国特供版"——同样的技术理念,但走了一套受控的分发体系。
PWA 缺的不是技术,是利益格局。