google-chrome - A2HS 停止触发任何 PWA。是否有触发 A2HS 的实际规范?

标签 google-chrome progressive-web-apps

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

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

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

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

最佳答案

最近有一些规范变化。继续,从 chrome 版本 68 开始,开发人员必须通过捕获 beforeinstallprompt 手动触发提示,如果需要则推迟它,并在其上调用 prompt() 方法在需要时。关于它的更多信息可以从 official document 中阅读,其中说明更新后的要求:

  1. The web app is not already installed
  2. Meets a user engagement heuristic (currently, the user has interacted with the domain for at least 30 seconds)
  3. Meets the Progressive Web App criteria:
    (a) Includes a web app manifest that includes:

    (i) short_name or name

    (ii) icons mustinclude a 192px and a 512px sized icons

    (iii) start_url

    (iv) display must be one of: fullscreen, standalone, or minimal-ui

    (b) Served over HTTPS (required for service workers)

    (c) Has registered a service worker with a fetch event handler

此外,现在进入为什么 beforeinstallprompt 没有被触发并且没有发送控制台输出的第二部分。原因可能是:

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

关于google-chrome - A2HS 停止触发任何 PWA。是否有触发 A2HS 的实际规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550820/

相关文章:

html - Twitter Bootstrap : Nest input-prepend within pull-right and search form

javascript - 在书签中转义原始的、未转义的字符串

css - Chrome 中的网站滚动速度非常慢,如何解决?

javascript - 渐进式 Web 应用软键盘和导航栏在全屏中重叠

Angular : service worker configuration

google-chrome - Chrome 扩展程序 : How to List The Contents of Local Directory

javascript - FB.login() 在 Android Chrome 上失败并显示 "Unsafe JavaScript attempt to initiate navigation for frame"但不是桌面 Chrome

ios - 在 iOS PWA 和 safari 之间共享 IndexedDB

javascript - 如何检查服务人员是否离线?

javascript - PWA 无法在 iPhone/iPad 上以全屏模式打开