google-chrome - A2HS 停止触发任何 PWA。是否有触发 A2HS 的实际规格?
问题描述
我一直在使用 PWA(渐进式网络应用程序)很长一段时间,但最近我想向另一个人展示 A2HS 弹出(添加到主屏幕)功能,它不会在我的手机或他们的手机上的任何 PWA 上触发。
列出来自https://pwa.rocks甚至我自己的示例,在灯塔上的 PWA 通过率为 100%,如果您使用应用程序控制台,弹出窗口会正常触发,但它只是没有自然地出现。
我还注册了“beforeinstallprompt”事件以发送控制台日志,但什么也没有。
提示何时可见有实际规范吗?在 1-2 个月的过程中发生了什么变化阻止了弹出窗口的发生?
解决方案
最近有一些规格变化。继续,从 chrome 版本 68 开始,开发人员将不得不手动触发提示,方法是捕获beforeinstallprompt
,如果需要则延迟它,prompt()
并在需要时调用它的方法。更多信息可以从官方文档中阅读,该文档将更新后的要求声明为:
- 尚未安装 Web 应用程序
- 满足用户参与启发式(当前,用户已与域交互至少 30 秒)
符合渐进式 Web 应用标准:
(a) 包括一个 Web 应用清单,其中包括:(i) 短名称或名称
(ii) 图标必须包括一个 192px 和一个 512px 大小的图标
(iii) start_url
(iv) 显示必须是以下之一:全屏、独立或最小用户界面
(b) 通过 HTTPS 提供服务(服务人员需要)
(c) 已使用 fetch 事件处理程序注册服务工作者
beforeinstallprompt
另外,现在谈到为什么不被解雇和不发送控制台输出的第二部分。原因可能是:
- “您只能在延迟事件上调用 prompt() 一次,如果用户将其关闭,则需要等到在下一页导航中触发 beforeinstallprompt 事件。” 所以本质上这可能意味着如果您可能取消了事件或关闭了弹出窗口,它甚至可能不会再次被触发。AFAIK,有一个冷静期,可以持续到 90 天。
- “如果 Web 应用程序清单包含 related_applications 并具有 'prefer_related_applications': true,则将显示本机应用程序安装提示。” 有可能将 prefer_related_application 标志设置为 true 并错过提及 related_applications 标记。因此,可能不会出现任何安装提示。
- 确保您没有在桌面上测试“A2HS”流程(改用远程调试)。因为如本文所述,“Chrome 在桌面和移动设备上的安装流程略有不同。虽然说明类似,但在移动设备上进行测试需要远程调试,如果没有它,它将使用桌面安装流程。” 和“对于 Mac 或 Windows,您需要启用 #enable-desktop-pwas 标志”。
推荐阅读
- angular - SQLSTATE [22007]:日期时间格式无效:1366 整数值不正确:Laravel 和 Angular 中“myapp”.“employees”.“state_id”列的“null”
- typescript - 如果我想使用一个打字稿组件,我应该将整个项目转换为打字稿吗?反应原生
- javascript - 如何使用 React + Redux 持久化收藏的项目
- python - 使用 Selenium 抓取 JSON 响应
- java - 关于扫描仪方法的问题 - 多个令牌
- python-3.x - 在 for 循环中加速 Keras 顺序模型
- c++ - 我无法让我的代码以 7 的步幅正常工作 C++
- c++ - 为什么即使我的系统有 `/usr/lib/libglfw.so.3` 文件,`ld` 也找不到`glfw3`?
- javascript - 尝试学习 Firebase。我正在关注“了解 Web 版 Firebase”代码实验室,但并没有走得太远
- c++ - 如何将带有捕获和参数的 lambda 传递给 Qt 的连接