#javascript #events #installation #progressive-web-apps #prompt
Вопрос:
Я хочу проверить, установлен ли PWA уже на устройстве пользователя, чтобы исчезнуть, или моя кнопка приглашения отсутствует.
Я уже пробовал window.matchMedia('(display-mode: standalone)').matches
, но это не совсем то, что я хочу делать. Я хочу, чтобы, если пользователь продолжит заходить на веб-сайт (а не в приложение), кнопка приглашения исчезла. И window.matchMedia
не делай этого.
Я пытался создать переменную, которая становится истинной при вызове события «appinstalled» или когда пользователь соглашается на установку, но это не работает, когда я console.log
эту переменную, она не определена.
У меня больше нет идей…
Вот мой код :
let deferredPrompt;
let buttonInstall = document.querySelector('#button-install');
let divPrompt = document.querySelector('.button-install-box');
let installedOrNot;
window.addEventListener('beforeinstallprompt', (e) => {
e.preventDefault();
deferredPrompt = e;
divPrompt.style.display = "flex";
});
buttonInstall.addEventListener('click', (e) => {
divPrompt.style.display = "none";
deferredPrompt.prompt();
deferredPrompt.userChoice.then((choiceResult) => {
if(choiceResult.outcome === "accepted") {
console.log("User accepted the install prompt");
installedOrNot = true;
} else {
divPrompt.style.display = "flex";
installedOrNot = false;
}
deferredPrompt = null;
});
});
window.addEventListener('appinstalled', (e) => {
divPrompt.style.display = "none";
deferredPrompt = null;
installedOrNot = true;
});
if(installedOrNot) {
divPrompt.style.display = "none";
}
Какие-нибудь решения, пожалуйста ?
Заранее благодарю вас !