为什么我的PWA在安卓上始终没有添加到主屏幕的提示?
我按文档配置了manifest和service worker,但安卓手机用Chrome访问时就是没弹出”添加到主屏幕”的提示。已经检查了HTTPS和图标配置,short_name也设了,连Lighthouse评分都90分了还是不行。
manifest.json里这样写的:
{
"name": "MyApp",
"short_name": "MyApp",
"icons": [{
"src": "icon-192.png",
"sizes": "192x192",
"type": "image/png"
}]
}
页面加载时也注册了service worker:
if('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js');
});
}
用Chrome开发者工具的Application面板能看到manifest加载正常,就是不触发提示,求大神指点!
{
"name": "MyApp",
"short_name": "MyApp",
"icons": [{
"src": "icon-192.png",
"sizes": "192x192",
"type": "image/png"
}],
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff"
}
service worker里加个fetch事件占位:
self.addEventListener('fetch', () => {});
PWA提示要求苛刻得很,少一个字段都懒得理你
1. **manifest.json 必须包含 192x192 和 512x512 的图标**
你只配了 192x192,加一个 512x512 的 PNG 图标:
2. **必须注册 service worker 并监听 fetch 和 activate 事件**
确保
sw.js有如下内容,至少监听fetch:3. **用户必须至少访问两次,且两次访问间隔大于 5 分钟**
Chrome 有内部逻辑判断是否弹提示,第一次访问几乎不会弹,关掉页面再打开一次试试。
4. **必须使用 HTTPS 且没有证书错误**
即使是 localhost 也得是 HTTPS,否则不会触发。
如果你都做了还不出提示,可以用这段代码手动触发一次检查:
把这些条件都满足后,再测试一下,应该就能看到提示了。