PWA 装了就被删?我跑完三个项目发现,安装率上不去根本不是 Service Worker 的问题
手机浏览器里打开网页,然后「添加到主屏幕」——这事大多数人都干过,但真能让用户留下来的却不多。
问题不在功能,在于很多 PWA 根本不知道自己被装到主屏幕之后,用户会怎么用。
PWA 安装率上不去,大多数原因不在技术实现
翻了几个案例,安装率低的共同问题不是 Service Worker 配错了,而是这几个:
- manifest.json 配置敷衍——图标不清晰、应用名称被截断、主题色和网页完全不搭
- 安装提示时机错——一进来就弹窗,用户还没看内容就已经烦了
- 没有离线能力——装了之后断网一片空白,用户下次直接删
- 独立窗口体验没做——在主屏幕打开,但看起来就是个浏览器标签页,用户感知不到价值
manifest.json 几个容易忽略的配置
{
"name": "购物助手",
"short_name": "购物",
"start_url": "/?utm_source=pwa",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#007AFF",
"icons": [
{ "src": "/icons/192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/512.png", "sizes": "512x512", "type": "image/png" }
]
}
short_name 尽量控制在 12 个字符以内,iOS 会截断。
start_url 加 UTM 参数,可以区分「从主屏幕打开」和「从浏览器打开」的用户行为。
display: standalone 让它看起来像个独立应用,不是浏览器套了个壳。
安装提示什么时候弹
不要一进来就弹。最佳时机是:用户已经完成了一个有意义的行为(比如加入购物车、收藏内容、完成了某个操作)。
这个时机可以用 Service Worker 的 sync 事件来判断,也可以用简单的 localStorage 标记。
if (localStorage.getItem("meaningfulAction") && !localStorage.getItem("installPromptShown")) {
deferredPrompt.prompt();
localStorage.setItem("installPromptShown", "true");
}
让 PWA 真正有离线价值
最少要做的:
- 缓存首页和核心资产(CSS、JS、字体)
- 离线时展示有意义的「网络不可用」页面,而不是空白
- 支持一些基础功能离线使用(阅读清单、笔记草稿等)
进阶的做法:
- Workbox 自动化缓存策略
- 增量更新而非全量重新下载
- Background Sync,用户离线时的操作联网后自动同步
怎么验证安装后的体验
Chrome DevTools → Application → Manifest,可以直接看到 manifest 是否正确解析、各个图标是否正常显示。
真机测试:用 Android Chrome 打开,加了 start_url 参数之后从主屏幕打开,看日志里有没有 utm_source=pwa 的记录。
下一步可以做的
- 打开 Chrome DevTools 检查一下你的 manifest.json 有没有漏掉的字段
- 确认 iOS Safari 的
apple-touch-icon和 Web App Manifest 图标都配了 - 在 Android 上把网页加到主屏幕,打开后检查独立窗口体验是否符合预期
安装只是第一步,让用户留在主屏幕上才是正经事。
评论区
0 条评论
登录后可评论。