@toorr2p
https://github.com/Cleverscript

Запуск установки приложения PWA при загрузке страницы?

Здравствуйте, реализовал поддержку 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 то код не сработает.
В чем тут фокус?
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы