iOS 15 上的 Workbox PWA 在离线时间歇性地显示 "Safari cannot open the page"

Workbox PWA on iOS 15 intermittently shows "Safari cannot open the page" when offline

我们开发了一个 PWA 来为我们的用户提供离线功能的子集。我们使用 IndexedDB 和 Workbox 6.2.0 来缓存数据、静态资产和 API 调用,并在离线时通过 service worker 将它们提供给用户。

它在 Android 上运行得非常好;但在 iOS 上,它会间歇性地显示“Safari 无法打开页面”本机错误页面,而不是离线功能。在 iOS 14 重新启动设备修复它,并且所有缓存数据仍然存在。在 iOS 15,我们不需要重新启动设备:通常会关闭所有选项卡,Safari 就可以了,PWA 可以再次离线使用;有时在我们重新上线之前它不会工作;其他时候,只要不理它,它就会恢复生机。

绑定设备并使用 Safari 或 Chrome 调试 PWA 当 PWA 出错时 DevTools 不显示任何内容 - 它不显示任何已注册的服务工作者、缓存或数据库。

老实说,我 运行 不知道如何诊断,更不用说修复了。有没有人以前遇到过这个问题,或者可以建议一种获取诊断数据的方法?

原来问题是我们的 PWA 在 manifest.json 中配置了 "display": "minimal-ui"。它必须设置为 standalonefullscreen

我们在查看为什么我们的所有 PWA 数据在 7 天不活动后被删除时发现了这一点。我们认为存在清单并且 PWA 保存在主屏幕中的事实足以让 Safari 删除 7-Day Cap on All Script-Writeable Storage even if the display was set to minimal-ui. This wasn't the case: The PWA must be configured with "display": "standalone" or fullscreen for the cap to be removed.

这样做也会阻止上述行为。