如何在 iOS 应用重新打开时刷新 PWA 主屏幕?

14

我创建了一个 PWA 应用,并通过 Google Chrome Lighthouse 审核工具进行了验证。在 Android 手机上,原生的“添加到主屏幕”提示会显示出来,在 iOS 上则会显示自定义的“添加到主屏幕”提示。

问题在于,在 iOS 上 PWA 保存了会话,因此我没有被重定向到“start_url”页面。

我需要一种选项,使用户在关闭应用程序并重新打开之后始终指向“start_url”页面。

这是 PWA 文件:https://www.ta-systems.net/BE-Utilities/pwc/test/

我尝试了文档中提到的方法,但无法让应用程序每次重新启动时刷新。

完整的代码可以在这里找到: https://www.ta-systems.net/BE-Utilities/pwc/test/

期望的结果应该是,应用程序在 5 秒后重定向到不同的 HTML 页面,一旦关闭应用程序并重新打开,就会重新打开“start_url”。

目前的情况如下:

  1. 我打开“timesheet.html”文件,然后提示我将 PWA 添加到主屏幕。
  2. 我将应用程序添加到主屏幕。
  3. 我从主屏幕打开应用程序,然后被重定向到“redirect.html”页面。
  4. 我关闭应用程序并重新打开它,但是“start_url”(timesheet.html)未被打开。
  • 应用程序卡在“redirect.html”屏幕上。
  • 2个回答

    6
    你的PWA在关闭后保存了会话状态。从iOS 12.2开始,苹果修复了PWA,使其能够保持PWA会话状态。然而,仍存在一个问题需要苹果修复:无论是将应用程序最小化(回到主屏幕),还是关闭它(通过刷掉app-switch模式),它都会保存状态。根据这篇文章(https://wespeter.com/posts/ios13-pwa-improvements/),苹果将在iOS 13中修复此问题,使得在强制退出(通过刷掉)后,从起始URL重新启动PWA,并且仅在最小化到主屏幕时保留状态。

    有没有办法实现以下期望的行为:如果主屏幕图标具有 start_url,则在应用程序最小化时,点击该图标将导航到该 URL? - biomiker

    -1

    您需要一个有效的Web Manifest,其中包含start_url和其他键。manifest中的start_url将指示应用程序在启动时要从哪个页面开始。


    我有一个有效的Web清单文件:https://www.ta-systems.net/BE-Utilities/pwc/test/timesheet_manifest.js。完整的PWA已经通过Google Lighthouse Audit工具进行了验证,清单文件没有错误。 - TudorAnghelina
    是的,你需要。但它没有声明有效的范围,也不可见。最好将其放在公共根目录中,以便可以通过https://www.ta-systems.net/manifest.json访问。此外,您必须在网页中包含它,如下所示:<link rel="manifest" href="./manifest.json">并且您的范围应该是scope : './'。 - Emmanuel
    你好,我已经按照你的建议进行了更改。Manifest文件现在位于根目录,并且范围已经相应地声明了。但问题仍然存在。https://www.ta-systems.net/timesheet_manifest.js https://www.ta-systems.net/BE-Utilities/pwc/test/ - TudorAnghelina

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接