【问题标题】:Workbox PWA on iOS 15 intermittently shows "Safari cannot open the page" when offlineiOS 15 上的 Workbox PWA 离线时间歇性显示“Safari 无法打开页面”
【发布时间】:2021-10-13 16:54:35
【问题描述】:

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

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

当 PWA 出错时,使用 Safari 或 Chrome DevTools 绑定设备和调试 PWA 不会显示任何内容 - 它不会显示任何已注册的 service worker、缓存或 DB。

  • 有一个离线后备页面配置为在用户尝试访问尚未缓存的资源时显示,因此this question 不适用。
  • this question 不同,如果我们重新连接到 Internet,PWA 就会恢复活力,然后它会再次离线工作。
  • This question 表示该设备的可用存储空间可能不足,但我们的存储空间还剩 6GB。
  • 我们知道 a bug in iOS 14 与我们看到的一致,但它应该在 iOS 15 中得到修复。
  • 我们还知道there was a bug with importScripts 这意味着 Workbox 没有正确缓存,但现在也应该修复(我们使用 importScripts 从 Google 的 CDN 中提取 Workbox)

说实话,我已经没有关于如何诊断这个问题的想法了,更不用说修复了。有没有人遇到过这种情况,或者可以提出一种获取一些诊断数据的方法?

【问题讨论】:

  • 鉴于这是非常特定于 iOS Safari 的,您是否在 bugs.webkit.org/enter_bug.cgi 提交了针对 Safari 的错误?希望 Apple 的工程团队知道需要什么样的调试信息,并能在这个问题上取得一些进展。
  • 感谢@JeffPosnick 我这样做并发现了问题...查看答案。

标签: ios progressive-web-apps mobile-safari workbox


【解决方案1】:

原来问题在于我们在 manifest.json 中使用 "display": "minimal-ui" 配置了 PWA。它必须改为standalonefullscreen

我们在查看为什么我们的所有 PWA 数据在 7 天不活动后被删除时发现了这一点。我们认为存在清单并且 PWA 保存在主屏幕中的事实足以让 Safari 删除 7-Day Cap on All Script-Writeable Storage,即使显示设置为 minimal-ui。事实并非如此:The PWA must be configured with "display": "standalone" or fullscreen for the cap to be removed

这样做也停止了上述行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-20
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多