如何为 pwa 添加自定义安装按钮

kam*_*mal 7 javascript reactjs progressive-web-apps next.js next-pwa

我想install在网站内为我的渐进式网络应用程序添加自定义按钮。我红色了很多文章并尝试了他们提供的答案。他们使用beforeinstallprompt

let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
    deferredPrompt = e;
});
Run Code Online (Sandbox Code Playgroud)

但我面临的问题是我希望按钮直接安装 PWA,而不是触发安装提示。是否可能,如果可以,我怎样才能实现这一目标。预先感谢您。

小智 12

尝试下面的代码,

第 1 步 - 创建按钮或任何控制器

<button id="installApp">Install</button>
Run Code Online (Sandbox Code Playgroud)

第 2 步 - 在 serviceworker 的脚本中添加以下 js 代码

let deferredPrompt;
    window.addEventListener('beforeinstallprompt', (e) => {
        deferredPrompt = e;
    });

    const installApp = document.getElementById('installApp');
    installApp.addEventListener('click', async () => {
        if (deferredPrompt !== null) {
            deferredPrompt.prompt();
            const { outcome } = await deferredPrompt.userChoice;
            if (outcome === 'accepted') {
                deferredPrompt = null;
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 你好@kamal,根据 PWA 架构,pwa 依赖于浏览器。所以没有浏览器提示不能直接安装。没有 PWA 默认安装功能是不可能的。 (7认同)

Sto*_*ght 6

答案是,你不能。根据清单规范

根据设计,该规范不为开发人员提供显式 API 来“安装”Web 应用程序。