Здравствуйте, реализовал поддержку PWA в интернет магазине, но клиент считает (и я с этим согласен), что пользователям совершенно не очевидно что есть возможность установки приложения PWA на главный экран, т.к он не знает в принципе что есть такая возможность, он не полезет в меню браузера что бы найти эту кнопку запуска установки приложения, при клике на которую появляется окошко с вопросом "Установить приложение" и двумя кнопками "Отмена", "Установить" .
Отсюда и вопрос - есть ли возможность сделать банально если нет cookie то предлагаем установку, если есть то нет.
Код скрипта таков
(() => {
let e;
let pwaInstallBtn = '.pwa-install';
let pwaWorker = '/local/assets/js/pwa-worker.js';
function t() {
const e = document.querySelectorAll(pwaInstallBtn);
e.length > 0 && e.forEach((e => {
e.remove()
}))
}
window.addEventListener("load", (() => {
if ("serviceWorker" in navigator) try {
navigator.serviceWorker.register(pwaWorker);
console.log("Service worker register")
} catch (e) {
console.log("Service worker register fail")
}
})), window.addEventListener("DOMContentLoaded", (() => {
let e = "browser tab";
window.matchMedia("(display-mode: standalone)").matches && (e = "standalone", t()), console.log("DISPLAY_MODE_LAUNCH:", e);
})), window.addEventListener("beforeinstallprompt", (t => {
t.preventDefault(), e = t,
function() {
const t = document.querySelectorAll(pwaInstallBtn);
t.length > 0 && t.forEach((t => {
t.addEventListener("click", (async () => {
e.prompt(), "accepted" === await e.userChoice && console.log("User accepted the A2HS prompt")
}));
}))
}(), console.log("beforeinstallprompt event was fired");
})), window.addEventListener("appinstalled", (() => {
t(), e = null, console.log("PWA was installed")
}));
})();
Как я понимаю на событии beforeinstallprompt мы ждем клика по "нашей" кнопке в HTML документа страницы, и если он произошел то вызываем установку и окошко появляется с предложением установки.
Но как запустить этот сценарий без каких либо действий пользователя? Или это не возможно? Пробовал в консоли после загрузки страницы выполнять
$('.pwa-install').click();
И установка запустилась, но если такое написать в скрипте, например на событии загрузки doom то код не сработает.
В чем тут фокус?