首页 > 解决方案 > 为什么基于 Workbox 的 PWA 在 iOS 12 上从主屏幕启动时会产生错误?

问题描述

清除数据后,我可以在浏览器中运行该应用程序,但如果我随后将其添加到主屏幕并尝试从那里重新启动,我会得到一个显示以下错误的普通页面:

Safari cannot open the page. The error was: "FetchEvent.respondWith received an error: Returned response is null."

随后在浏览器中启动也会给出该错误。我必须再次在浏览器中“清除数据”才能让它再次工作。

我正在使用 Workbox v3.6.2(在撰写本文时是最新版本),并且我的 iPhone 运行的是 iOS 12。

看起来很可疑,但我有点过头了(好吧,无论如何,解决方法是)。这让我想再次尝试降级到 iOS11.X,和/或安装 Technology Preview 59。

标签: progressive-web-appsios12workbox

解决方案


看起来这个错误有多种可能的原因 - 我已经遇到过两次了;

情况 1:需要添加 ROOT 证书并在设备上将其设置为受信任。

我的条件;

  1. 从本地服务器加载 pwapp 时,我在装有 iOS 12 的 iPhone 5s 上遇到了同样的错误。

  2. 在服务器的开发机器上使用自签名证书。

  3. 不使用工作箱。

  4. 如果使用来自 iOS 认可的证书颁发机构的 ssl 证书从提供商托管的服务器加载 pwapp,则不会出现问题

原来这与安全证书有关 - (不使用 Mac,因此无法调试到设备上的网络/安全问题级别/直接进行全面诊断)。

修复是;

  1. 创建一个自签名根证书并将其用于我的服务器。
  2. 将根证书 .pem 文件转换(副本)为 .der
  3. 通过设备上的 safari 访问 .der / 添加配置文件,设置为受信任。

(正确的方法是做根证书、中介证书和服务器证书,使用服务器证书并通过 url 提供根证书或将其通过电子邮件发送到设备上的电子邮件客户端。)

有用的链接;

请参阅在 General->About->Certificate Trust Settings 中获取证书

情况 2:当您可以访问服务器时,您必须至少从主屏幕图标访问 pwapp 一次。

重现; (联网)

  1. 从主屏幕删除图标并清除 Safari 历史记录和网站数据

  2. 访问 pwapp 网址

  3. 添加到主屏幕但不启动

  4. 关闭网络

  5. 尝试从主屏幕启动 => 得到错误

  6. 打开网络,从主屏幕启动 pwapp => 好的。

  7. 关闭 pwapp,关闭网络,从主屏幕启动 pwapp => 好的。

    所以看起来像一个 iOS/Safari/Webkit 错误


推荐阅读