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

uniapp在线下载安装包更新app

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新
外加网络波动导致失败重新下载更新包

 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system = e.system.toLowerCase();const platform = e.platform.toLowerCase();// 判断是否为ios设备if (platform.indexOf("ios") != -1 &&(system.indexOf("ios") != -1 || system.indexOf("macos") != -1)) {Vue.prototype.SystemPlatform = "apple";} else if (platform.indexOf("android") != -1 && system.indexOf("android") != -1) {Vue.prototype.SystemPlatform = "android";uni.request({url: "https://xxxxxxx.love/0.json", // JSON 文件地址success: (res) => {if (res.statusCode === 200) {const version = res.data.version; // 获取 版本字段if (version != "1.0.1") {uni.showModal({title: "更新提示",content: "有新的版本可用,是否立即更新?",success: (result) => {if (result.confirm) {const downloadTask = uni.downloadFile({url: "https://xxxxxxx.love/lock.apk", // 更新包地址success: (downloadResult) => {if (downloadResult.statusCode === 200) {const tempFilePath = downloadResult.tempFilePath;// 保存文件到持久目录uni.saveFile({tempFilePath: tempFilePath,success: (saveResult) => {console.log("文件保存成功,路径:",saveResult.savedFilePath);uni.openDocument({filePath: saveResult.savedFilePath,success: function (res) {console.log(res, "打开安装包");},});return;// 提示用户去文件管理器中安装uni.showModal({title: "下载完成",content:"更新包下载完成,请在文件管理器中找到并安装更新包。",showCancel: false,success: () => {uni.hideLoading(); // 隐藏进度条},});},fail: (err) => {console.error("保存文件失败", err);uni.hideLoading(); // 隐藏进度条},});}},fail: (err) => {console.error("下载失败", err);uni.hideLoading(); // 隐藏进度条},});uni.showLoading({title: "正在下载更新包",mask: true,});let lastProgress = 0;let lastUpdateTime = new Date().getTime();const updateInterval = 1500;downloadTask.onProgressUpdate((res) => {const currentTime = new Date().getTime();if (res.progress - lastProgress >= 5 ||currentTime - lastUpdateTime >= updateInterval) {lastProgress = res.progress;lastUpdateTime = currentTime;uni.showLoading({title: `下载中... ${res.progress}%`,mask: true,});}});}},});}}},fail: (err) => {console.error("请求失败", err);},});} else {Vue.prototype.SystemPlatform = "devtools";}// #endif},});

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 有哪些适合中小企业的六西格玛培训课程?
  • 规范化JavaBean
  • poi-tl循环放图片+文字说明
  • dm 到 dm 的 HS 同步部署
  • 入门request请求库使用
  • 5.1、生成树协议stp
  • 【ubuntu24.04】docker pull 配置
  • leetcode_62. 不同路径 + 63. 不同路径 II
  • Python青少年简明教程:数据类型和操作符
  • 微信小程序免费《短视频去水印》
  • day02-作业题
  • 小学二年级数学精选试题
  • 学习笔记——交通安全分析30
  • 企业高性能web服务器---nginx详解(基础介绍配置,核心配置)
  • MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法,MySQL 编译安装时需要安装的依赖(全)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • C# 免费离线人脸识别 2.0 Demo
  • css布局,左右固定中间自适应实现
  • ECMAScript入门(七)--Module语法
  • input实现文字超出省略号功能
  • JAVA并发编程--1.基础概念
  • Logstash 参考指南(目录)
  • Mybatis初体验
  • Vue 重置组件到初始状态
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 后端_ThinkPHP5
  • 记录:CentOS7.2配置LNMP环境记录
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 通过npm或yarn自动生成vue组件
  • 网页视频流m3u8/ts视频下载
  • 源码安装memcached和php memcache扩展
  • 怎样选择前端框架
  • 走向全栈之MongoDB的使用
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #etcd#安装时出错
  • $L^p$ 调和函数恒为零
  • (1)SpringCloud 整合Python
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (libusb) usb口自动刷新
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • *** 2003
  • .NET MVC 验证码
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .net操作Excel出错解决
  • .NET未来路在何方?
  • [ C++ ] STL---stack与queue
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • []常用AT命令解释()
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器