首页 > 解决方案 > A2HS 停止触发任何 PWA。是否有触发 A2HS 的实际规格?

问题描述

我一直在使用 PWA(渐进式网络应用程序)很长一段时间,但最近我想向另一个人展示 A2HS 弹出(添加到主屏幕)功能,它不会在我的手机或他们的手机上的任何 PWA 上触发。

列出来自https://pwa.rocks甚至我自己的示例,在灯塔上的 PWA 通过率为 100%,如果您使用应用程序控制台,弹出窗口会正常触发,但它只是没有自然地出现。

我还注册了“beforeinstallprompt”事件以发送控制台日志,但什么也没有。

提示何时可见有实际规范吗?在 1-2 个月的过程中发生了什么变化阻止了弹出窗口的发生?

标签: google-chromeprogressive-web-apps

解决方案


最近有一些规格变化。继续,从 chrome 版本 68 开始,开发人员将不得不手动触发提示,方法是捕获beforeinstallprompt,如果需要则延迟它,prompt()并在需要时调用它的方法。更多信息可以从官方文档中阅读,该文档将更新后的要求声明为:

  1. 尚未安装 Web 应用程序
  2. 满足用户参与启发式(当前,用户已与域交互至少 30 秒)
  3. 符合渐进式 Web 应用标准:
    (a) 包括一个 Web 应用清单,其中包括:

    (i) 短名称或名称

    (ii) 图标必须包括一个 192px 和一个 512px 大小的图标

    (iii) start_url

    (iv) 显示必须是以下之一:全屏、独立或最小用户界面

    (b) 通过 HTTPS 提供服务(服务人员需要)

    (c) 已使用 fetch 事件处理程序注册服务工作者

beforeinstallprompt另外,现在谈到为什么不被解雇和不发送控制台输出的第二部分。原因可能是:

  1. “您只能在延迟事件上调用 prompt() 一次,如果用户将其关闭,则需要等到在下一页导航中触发 beforeinstallprompt 事件。” 所以本质上这可能意味着如果您可能取消了事件或关闭了弹出窗口,它甚至可能不会再次被触发。AFAIK,有一个冷静期,可以持续到 90 天。
  2. “如果 Web 应用程序清单包含 related_applications 并具有 'prefer_related_applications': true,则将显示本机应用程序安装提示。” 有可能将 prefer_related_application 标志设置为 true 并错过提及 related_applications 标记。因此,可能不会出现任何安装提示。
  3. 确保您没有在桌面上测试“A2HS”流程(改用远程调试)。因为如本文所述,“Chrome 在桌面和移动设备上的安装流程略有不同。虽然说明类似,但在移动设备上进行测试需要远程调试,如果没有它,它将使用桌面安装流程。” 和“对于 Mac 或 Windows,您需要启用 #enable-desktop-pwas 标志”。

推荐阅读