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

uniapp APP端在线升级(简版)

设计思路:

1.版本比较:应用程序检查其当前版本与远程服务器上可用的最新版本

2. 更新状态指示:如果应用程序是不是最新的版本,则页面提示下载最新版本。

3.下载启动:通过plus.downloader.createDownload()启动新应用版本的下载,监听下载过程。

4.安装:下载成功后,用户可点击更新,应用程序通过plus.runtime.install()触发新应用版本的安装。

5应用重启:最后,应用程序使用plus.runtime.restart()重启以应用。

let configUrl = config.baseUrllet baseUrl = configUrl.toString().split(':')let appUrl = baseUrl[0] + ':' + baseUrl[1] + ":8888/statics/his-app.apk"let downloadTask = plus.downloader.createDownload(appUrl,{method: "GET",},(task, status) => {console.log(status, "status")if (status == 200) {//下载成功uni.showModal({title: '',content: '下载成功,确定现在更新吗?',confirmText: '更新',confirmColor: '#EE8F57',success: function (res) {if (res.confirm) {console.log("更新")plus.runtime.install(task.tempFilePath,{force: true,},function () {// 安装成功,可以重启应用plus.runtime.restart()},function (e) {uni.showModal({title: '更新失败',content: '更新失败',showCancel: false})plus.nativeUI.closeWaiting()// 安装失败,处理错误})}},complete: () => {// uni.hideLoading();}})} else {uni.showToast({title: "下载失败",icon: "error",})}}).start();

 //监听下载过程downloadTask.addEventListener("statechanged", (task, status) => {switch (task.state) {case 1: // 开始console.log("开始")breakcase 2: //已连接到服务器console.log("已连接到服务器")breakcase 3: // 已接收到数据console.log("已接收到数据 ")let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小if (hasProgress) {let current = parseInt((100 * task.downloadedSize) / task.totalSize) //获取下载进度百分比console.log(current)}breakcase 4: // 下载完成console.log("下载完成")break}})


http://www.mrgr.cn/news/96807.html

相关文章:

  • 量子计算与人工智能融合的未来趋势
  • 机器人--ros2--IMU
  • 图片边缘采样
  • dubbo http流量接入dubbo后端服务
  • Android学习之计算器app(java + 详细注释 + 源码)
  • 在Windows下使用Docker部署Nacos注册中心(基于MySQL容器)
  • 华为交换综合实验——VRRP、MSTP、Eth-trunk、NAT、DHCP等技术应用
  • MySQL数据库学习笔记1.SQL(1)
  • 使用 GitHub Pages 快速部署静态网页
  • Mysql之事务(下)
  • Linux安装Ubuntu24.04系统 并安装配置Nvidia 4090 显卡驱动
  • 论文阅读笔记:Denoising Diffusion Implicit Models (2)
  • STM32_HAL之程序编写、编译、烧写、上板测试初体验
  • 使用SpringBoot + Thymeleaf + iText实现动态PDF导出
  • git 按行切割 csv文件
  • echarts+HTML 绘制3d地图,加载散点+散点点击事件
  • C#:第一性原理拆解属性(property)
  • Anaconda和Pycharm的区别,以及如何选择两者
  • k8s 1.30 安装ingress-nginx
  • 为什么 Three.js 里 Cannon.js 物体堆叠时会有空隙?