为啥 iOS 在 manifest.json 更改后不会启动 PWA?

Posted

技术标签:

【中文标题】为啥 iOS 在 manifest.json 更改后不会启动 PWA?【英文标题】:Why won't iOS launch a PWA after changes in its manifest.json?为什么 iOS 在 manifest.json 更改后不会启动 PWA? 【发布时间】:2019-02-21 21:24:44 【问题描述】:

我制作了一个 PWA,以便我的网络应用可以离线使用。这适用于 ios。但是,在我对其manifest.json(在服务器上)进行更改后,添加到主屏幕的网络应用程序将仅显示其初始屏幕图像,然后挂在白屏上。

这甚至发生在更改版本号这样小的更改之后(据说这会使 iOS 检查服务器上的更新文件)。我在 iOS 12.1.4 和 iOS 12.1 模拟器上进行了测试。

我怎样才能防止这种情况发生?

这是我的 manifest.json,为简洁起见删除了图标列表:


  "name": "My App Name",
  "short_name": "App Name",
  "version": "2.2.2",
  "theme_color": "#ffcc00",
  "background_color": "#382d00",
  "display": "standalone",
  "orientation": "landscape",
  "scope": "/",
  "start_url": "/",
  "manifest_version": 2

更新:当我转到 URL 时,即使是普通的 iOS Safari 也会显示一个空白屏幕,直到我从其历史记录中删除该网站。

【问题讨论】:

它从documentation 中说,如果您将来更新 manifest.json 文件,除非用户将您的应用重新添加到他们的主页,否则这些更改不会自动被用户接收屏幕。这是预期的行为。 有趣!不知何故,我在那个页面上找不到那个。无论如何,我的主要问题是,在更改清单后,Web 应用程序除了启动屏幕和白屏之外什么都不会显示。所以显然 iOS 确实会检查更新,并且出于某种原因决定不继续加载应用程序。 【参考方案1】:

我面临同样的情况,目前我正在通过在 5 秒后添加检查来解决它,如果 pwa 尚未加载,我会触发重新加载以解决问题。

但这远非理想,所以我会继续寻找更好的解决方案

【讨论】:

以上是关于为啥 iOS 在 manifest.json 更改后不会启动 PWA?的主要内容,如果未能解决你的问题,请参考以下文章

图标的问题,以及更改electron.manifest.json会导致崩溃。

001_manifest.json手册

Chrome 扩展的 Manifest.json 中的自定义值?

Webpacker 在 /app/public/packs/manifest.json 中找不到 application.css

vue项目打包成apk

可以在HTTP / 2上推送manifest.json吗?我应该如何为它脱毛?