当前位置: 首页 > news >正文

在VUE内使用beforeinstallprompt接口安装PWA添加到桌面

前提是先在网站根目录下配置一个 “manifest.json” 文件,内容大致如下:

{"name": "Your App Name","display_override": ["window-controls-overlay"],"short_name": "Short Name","orientation": "any","description": "App Description","start_url": "xxx.html","scope": "./","display": "fullscreen","background_color": "#000000","theme_color": "#000000","icons": [{"src": "icon-192x192.png","sizes": "192x192","type": "image/png"},{"src": "icon-256x256.png","sizes": "256x256","type": "image/png"},{"src": "icon-512x512.png","sizes": "512x512","type": "image/png"}],"screenshots": [{"src": "screenshot.jpg","sizes": "640x300","type": "image/jpg"}],"shortcuts": [{"name": "Purchase","url": "xxx.html","icons": [{ "src": "shortcuts.png", "sizes": "16x16" }]}],"protocol_handlers": [{"protocol": "web","url": "xxx.html#!/%s"}]
}

然后在html页面的head头部配置信息:

<link rel="manifest" href="/manifest.json" />
<meta name="theme-color" content="#000000" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-title" content="Your App Name" />
<link rel="apple-touch-icon" href="icon-192x192.png" />

接下来可以先参照MDN的官方教程:

https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeinstallprompt_event

当浏览器检测到某个网站可以进行 installed as a Progressive Web App 时,将触发 beforeinstallprompt 事件。

第一步:先增加一个button按钮

<button id="install" hidden>Install</button>

第二步,用js监听事件

  • 当浏览器检测到页面符合 PWA 安装条件时,会触发 beforeinstallprompt 事件。可以监听此事件并保存触发它的对象,以便在适当的时机调用。
  • 然后在合适的业务逻辑中(例如点击安装按钮)调用 prompt() 显示安装弹窗。
  • 通过清除 installPrompt 变量并再次隐藏自身来重置其状态。
let installPrompt = null;
const installButton = document.querySelector("#install");window.addEventListener("beforeinstallprompt", (event) => {event.preventDefault();installPrompt = event;installButton.removeAttribute("hidden");
});installButton.addEventListener("click", async () => {if (!installPrompt) {return;}const result = await installPrompt.prompt();console.log(`Install prompt was: ${result.outcome}`);installPrompt = null;installButton.setAttribute("hidden", "");
});

如果在VUE中使用,那么需要用以下方法

  1. 增加Vue的 created 生命周期函数,beforeinstallprompt 监听方法只能写在 created 内,mounted方法不管用。
  2. 提前设置变量接收监听事件返回对象,用来按钮点击时的操作
  3. 单独为按钮增加点击时的响应事件
created() {window.addEventListener("beforeinstallprompt", (event) => {event.preventDefault()// 提前设置一个变量接收监听对象this.installPrompt = event// 提前设置一个开关用来隐藏显示安装按钮this.isShowInstallButton = true})
}// 安装PWA应用
onInstallApp() {if (!this.installPrompt) {return}this.installPrompt.prompt().then(result => {this.disableInAppInstallPrompt();console.log(`Install prompt was: ${result.outcome}`);});
},
// 卸载事件隐藏安装按钮
disableInAppInstallPrompt() {this.installPrompt = null;this.isShowInstallButton = false
}
<button v-show="isShowInstallButton" @click="onInstallApp()">添加到桌面</button>
http://www.dtcms.com/a/593240.html

相关文章:

  • CMMI证书(更准确地说,是CMMI评估等级证书)对于一个组织,特别是软件和研发类组织来说,作用是多方面的、战略性的。
  • 深入探讨redis:分布式锁
  • Spring Cloud Gateway详解笔记:核心概念、工作原理与最佳实践
  • 三维数字图像相关方法在汽车踏板臂载荷下的裂纹尖端应变场及断裂韧性分析
  • 源码之家网站上海网站制作怎么选
  • 工业数据库怎么选:一文详解实时数据库“亚控” vs TDengine
  • CTFHub Web进阶-Json Web Token通关2:敏感信息泄露
  • 基于Java+Spring Boot、Vue的B/S医院患者随访管理系统源码,支持二次开发,三级随访体系(出院/门诊随访)、智慧云库(表单配置)
  • 怎么样创建做零食山楂的网站建设门户网站预算
  • 网站后台模板 下载公司做影视网站侵权
  • leetcode860题. 柠檬水找零
  • 二者的差异,是掌握 Spring 依赖注入(DI)和控制反转(IoC)的关键 作用对象与作用方式 @Component:类级别的自动 ...
  • gitlab 与gitlab-runner 安装与配置
  • 高职学前教育与法律事务专业:证书规划与职业发展指南
  • 外贸做网站推广环球资源网网站特色
  • 【LLIE技术专题】基于成对低光图像学习自适应先验方案
  • 广东专升本计算机C语言
  • CentOS 安装Docker 报错requires container-selinux >= :.x
  • 微网站php源码九寨沟网站建设规划书
  • 如何保证接口在高并发情况下稳定
  • 靠谱的南宁康复机构位置分析 南宁康复机构的重要性
  • 怎么查看网站是哪个公司建的淘宝网站那个做的
  • 如何实现pnpm commit拦截
  • 网站制作专业wordpress创建模板
  • 修改visio中默认的框图以及文字格式
  • java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf
  • DVSSL证书vsOVSSL证书:详细区别与选择指南
  • 【Linux】CentOS 部署 IPFS
  • 声网选择性注意力锁定如何在嘈杂环境中守护特殊儿童?
  • RPA 财务自动化:核心应用场景,让财务工作降本增效提质