添加到主屏幕不提示,即使它符合所有的PWA规范,并由on Light House检查。
我已经尝试了下面的代码来检查应用程序是否已经安装。但是appinstalled事件没有被触发,并且beforeinstallprompt提示事件被成功触发。
// appinstalled
window.addEventListener('appinstalled', (evt) => { app.logEvent('a2hs', 'installed'); });
// beforeinstallprompt提示
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault();
deferredPrompt = event;
});```
// manifest.json
`{
"name": "demo",
"short_name": "demo",
"icons": [{
"src": "/static/public/icon/icon-192x192.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "/static/public/icon/icon-512x512.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/",
"orientation": "portrait",
"display": "standalone",
"theme_color": "#085689",
"background_color": "#085689",
"gcm_sender_id": "103xx3xxx50x",
"gcm_user_visible_only": true
}
`
// service worker
`self.addEventListener('fetch', (event) => {
console.log('event', event);
});`发布于 2019-09-25 18:07:27
从代码中删除此行
event.preventDefault();从Chrome76开始,preventDefault()停止了自动迷你信息栏的出现
更多详细信息请点击此处
https://developers.google.com/web/fundamentals/app-install-banners/
发布于 2020-05-18 04:31:59
event.preventDefault(); 这就是你的问题所在。去掉它。
发布于 2020-10-18 06:03:24
通过删除event.preventDefault(),您将不再能够控制事件!
我建议以一种精简的方式来控制事件,并获得有关安装的信息,尝试以下代码:
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault();
deferredPrompt = event;
deferredPrompt.prompt();
deferredPrompt.userChoice.then(result => {
if(result.outcome === "accepted") {
// TODO whatever you want to do when the user accept to install the app
} else {
// TODO whatever you want to do when the user refuse to install the app
});
})https://stackoverflow.com/questions/58081643
复制相似问题