【问题标题】:Issue with PWA on iOS 113iOS 113 上的 PWA 问题
【发布时间】:2018-04-06 09:06:00
【问题描述】:

我有一个 PWA,在我将手机更新到 11.3 之前,我一直在完美地使用它(引入 Service Worker 支持,所以在我的 iPhone 中它只是一个书签)并且一切都像一个魅力. 在我更新到 iOS 11.3 后,我无法进入我的应用程序,因为我有一个外部登录名(在其他域中),所以每次我尝试打开我的 open 时,都会打开一个 safari 浏览器来进行身份验证。在 iOS 中的 PWA 之前,外部 URL 是在同一个打开中打开的(没有打开 safari)。你知道这是否是正确的行为,如果可以,我该如何解决?

谢谢!

【问题讨论】:

  • 尝试在他们的issue tracker 中发帖,这可能有助于他们检查 iOS 上的特定版本是否存在问题。希望这会有所帮助。

标签: ios safari progressive-web-apps


【解决方案1】:

我设法通过删除清单元标记来解决这个问题:

<link rel="manifest" href="/tracker/site.webmanifest">

我的项目是一个简单的 PWA,它使用 Google 的 OAuth 进行登录。我被重定向到 Safari 登录并且无法返回应用程序(在我的主屏幕上)。希望它也对你有用,我浪费了 2 天时间试图找到解决方案。

Anand 的回复告诉我,支持离线的 PWA 需要实现服务工作者,因为它们在 11.3(或 11.4,不确定)和 NOT 清单中受支持。

无论如何,这对我有用,希望对其他人也有帮助。

【讨论】:

  • 这会随机导致 _self 链接在 safari 窗口中打开还是您认为这无关? _self 指向同一域的链接有时也会退出我的 PWA
【解决方案2】:

当没有服务的 PWA 工作(您的浏览器不支持它或您的应用程序没有)被添加到主屏幕时,它只是一个书签。当浏览器找到一个软件时,它会创建一个包(如 apk)。

如何测试 - 在 android 中查找没有 service worker 的 PWA 站点并添加到主屏幕。当我在其中一台三星设备上尝试时,它只显示“删除”选项而没有卸载选项。当我添加一个有软件的 PWA 时,得到了卸载选项。当服务人员在场时,我还能够找到 Chrome 生成的 apk。

现在在 iOS 上 - 我能想到的 3 种可能性。 1)我的理论基于以上在 PWA 上使用和不使用 Service Worker 时的行为,iOS 11.2.x 创建的主页图标是一个书签,而新版本的 safari 将其视为在浏览器中打开它的书签。我无法对此进行测试,因为我已经升级到 11.3 并且没有 11.3 之前的 PWA 图标。

2) 如果您重新安装了图标(通过删除并再次添加到主屏幕)并且仍然存在问题,这可能是因为您的清单文件或服务工作人员文件与 Safari 存在一些问题/兼容性。

由于我们没有类似 Lighthouse 的 Safari 浏览器,您可以在 Chrome Lighthouse 中验证您的 manifest.json 和 service workers。

3) Check on scope attribute 在清单文件中,以确保您覆盖了您打算覆盖的整个域。如果您的范围仅涵盖 domain.com/myapp,则当尝试从任何来源打开时,domain.com/otherapp 将在浏览器中打开。

【讨论】:

    【解决方案3】:

    似乎在最新的 iOS 版本 11.4 中解决了这个问题,我认为现在 safari 在浏览器和 PWA 之间共享上下文,例如可以从 PWA 访问 cookie 抛出 safari。 但是我认为当你打开 PWA 并且你被重定向到登录时仍然存在问题(Safari 打开)一旦你登录你留在浏览器中(iOS 不会返回到 PWA,但这是第一步)

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2018-11-05
      • 2021-10-09
      • 2021-12-28
      • 2021-07-20
      相关资源
      最近更新 更多