无需登录 数据私有 本地保存

PWA 安装提示管理器 - 自定义 A2HS 行为

36
0
0
0

PWA 安装提示管理器

自定义 Add to Home Screen (A2HS) 行为 · 实时预览 · 一键生成代码

快速预设模板
📱
经典横幅
底部提示
💬
居中弹窗
模态框样式
🔔
顶部通知
滑入提示
🍎
iOS 引导
Safari适配
提示内容设置
触发条件设置
设为0则关闭后不再显示(同一会话内)
外观与位置
20px
实时预览
9:41
我的应用
欢迎使用
这是应用的主要内容区域预览。
功能亮点
⚡ 快速加载 · 📱 响应式设计 · 🔒 安全连接
热门推荐
发现更多精彩内容
这是模拟效果,实际表现因浏览器而异
生成的 JavaScript 代码
// 正在生成代码...
使用说明:将生成的代码保存为 pwa-install.js,在HTML中通过 <script src="pwa-install.js"></script> 引入,并确保已注册 Service Worker 且配置了 manifest.json。
当前页面 PWA 状态检测

检测你当前浏览的网站是否支持 PWA 安装功能

Service Worker
检测中...
Manifest.json
检测中...
安装状态
检测中...
A2HS 支持
检测中...
检测基于当前页面的运行时环境,结果因浏览器和网站配置而异。
Manifest.json 配置参考

一个完整的 manifest.json 示例,确保你的 PWA 满足 Chrome 的安装条件

// manifest.json - PWA 应用清单 { "name": "我的应用", "short_name": "应用", "description": "一个优秀的PWA应用", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#4f46e5", "orientation": "any", "icons": [ { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" } ] }
常见问题与知识点
什么是 A2HS(Add to Home Screen)?
A2HS(Add to Home Screen)是现代浏览器提供的一项功能,允许用户将 Progressive Web App(PWA)直接添加到设备的主屏幕上。添加后,PWA 可以像原生应用一样启动,拥有独立的窗口、应用图标和启动画面。Chrome、Edge、Samsung Internet 等浏览器通过 beforeinstallprompt 事件支持自定义安装流程,而 iOS Safari 则需要用户通过分享菜单手动添加。
beforeinstallprompt 事件是什么?如何拦截?
beforeinstallprompt 是浏览器在 PWA 满足安装条件时触发的事件。通过调用 event.preventDefault() 可以阻止浏览器默认的安装提示,并将事件保存到变量中。之后可以在自定义的 UI 按钮上调用 deferredPrompt.prompt() 来触发安装。注意:此事件仅在 Chrome 76+、Edge 79+、Samsung Internet 等基于 Chromium 的浏览器中可用,iOS Safari 不支持。
PWA 安装需要满足哪些条件?
Chrome 浏览器要求 PWA 必须满足以下条件才能触发安装:
① 网站必须通过 HTTPS 访问(localhost 除外);
② 必须配置有效的 manifest.json,包含 name、short_name、icons(至少 192x192 和 512x512)、start_url、display(standalone 或 fullscreen);
③ 必须注册并激活 Service Worker;
④ 用户需要与网站有足够的交互(Chrome 的参与度检查)。
此外,如果用户之前已安装或拒绝安装,浏览器可能会在冷却期后再触发。
iOS Safari 如何实现"添加到主屏幕"?
iOS Safari 不支持 beforeinstallprompt 事件。要在 iOS 上引导用户安装 PWA,需要:
① 添加 <meta name="apple-mobile-web-app-capable" content="yes"> 标签;
② 配置 apple-mobile-web-app-status-bar-styleapple-touch-icon
③ 在页面中显示自定义引导提示,指引用户点击 Safari 的"分享"按钮,然后选择"添加到主屏幕"。
可以使用 navigator.standalone 检测是否已在独立模式运行。
如何检测用户是否已经安装了 PWA?
可以通过以下几种方式检测:
① 使用 CSS 媒体查询:@media (display-mode: standalone) { ... }
② 使用 JavaScript:window.matchMedia('(display-mode: standalone)').matches
③ 在 iOS 上检测:navigator.standalone === true
④ 监听 appinstalled 事件,在安装成功后执行回调。
检测到已安装后,可以隐藏安装提示,优化用户体验。
自定义安装提示的最佳实践是什么?
不要过早显示提示——给用户时间了解你的网站价值后再提示安装;
提供明确的关闭选项——尊重用户选择,允许他们轻松关闭提示;
使用冷却机制——用户关闭后,不要立即再次显示,建议等待数小时或数天;
清晰的文案——说明安装的好处(如离线使用、更快加载),而非仅说"安装";
在合适的时机触发——如用户完成关键操作后、浏览多页内容后、或滚动到一定深度时;
检测已安装状态——避免向已安装用户显示提示。
所有浏览器都支持自定义 A2HS 吗?
不是所有浏览器都支持。支持情况如下:
Chrome(桌面+Android):完全支持 beforeinstallprompt
Edge(桌面+Android):完全支持;
Samsung Internet:完全支持;
Opera(Android):支持;
⚠️ Firefox(Android):支持 A2HS 但不支持 beforeinstallprompt
Safari(iOS):不支持 beforeinstallprompt,需使用自定义引导;
Firefox(桌面):不支持 PWA 安装。
Service Worker 必须注册才能触发安装提示吗?
是的,在 Chromium 浏览器中,注册并激活 Service Worker 是触发 beforeinstallprompt 事件的必要条件。Service Worker 需要至少有一个 fetch 事件监听器。最简单的 Service Worker 示例如下:
self.addEventListener('fetch', e => e.respondWith(fetch(e.request)));
没有 Service Worker,浏览器不会触发安装提示。这是 Google 确保 PWA 具有离线能力的基本要求。