位置: IT常识 - 正文

uniapp 实现app自动更新(uniapp示例)

编辑:rootadmin
uniapp 实现app自动更新

推荐整理分享uniapp 实现app自动更新(uniapp示例),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp实现app自动更新,uniapp自动化部署,uniapp自定义弹出框,uniapp 自启动,uniapp 自定义loading,uniapp 自定义loading,uniapp 自定义loading,uniapp自动化部署,内容如对您有帮助,希望把文章链接给更多的朋友!

uniapp 实现app自动更新(uniapp示例)

需求概述: 最近遇到的需求,扫码核验的app需要在线自动升级安装(因app简单上不了应用市场,所以调研用在线更新的办法)

第一步:首先需要一个可以更新和获取数据的接口(后端)

比如第一次打包时的版本名称是1.0.1,那第一次将这个1.0.1版本的手动安装到手机上后,后续想要实现自动更新,再次打包的版本名称就必须大于1.0.1(因为本次实现的逻辑就是根据版本名称) 版本号位置:manifest.json >> 基础配置 >> 应用版本名称

当需要更新app的时候,改变版本名称(必须大于上一个版本),开始打包

同时在后端的接口里同步更新你的此次打包的版本名称

第二步:打包后的apk文件需要放在服务器上,然后拿到在服务器上的文件的地址(后续有用)第三步:开始在App.vue里书写前端逻辑(直接贴代码)onLoad() : 在页面加载的时候触发,只会调用一次,在onLoad() 函数中,可以通过 option获取当前页面路径中的参数onShow(): 在页面显示时调用,也就是切换页面的时候,或者切入前台的时候触发,可以多次触发 根据自己的需求来确定是写在onShow还是onLoad

原理:获取当前app的版本名称,在onShow触发的时候调接口比对当前app版本名称和线上最新版本名称,如果线上最新版本名称大于当前版本名称则下载最新的apk安装更新

onShow: function() {console.log('App Show')plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {this.version = widgetInfo.versionuni.request({url: 'http://xxxx.cczu.edu.cn:8081/api/dict',success: (res) => {function compareVersion(version1, version2) {const newVersion1 = `${version1}`.split('.').length < 3 ? `${version1}`.concat('.0') : `${version1}`;const newVersion2 = `${version2}`.split('.').length < 3 ? `${version2}`.concat('.0') : `${version2}`; //计算版本号大小,转化大小 function toNum(a){ const c = a.toString().split('.'); const num_place = ["", "0", "00", "000", "0000"], r = num_place.reverse(); for (let i = 0; i < c.length; i++){ const len=c[i].length; c[i]=r[len]+c[i]; } return c.join(''); } // 检测版本号是否需要更新 function checkPlugin(a, b) { const numA = toNum(a); const numB = toNum(b); return numA > numB ? 1 : numA < numB ? -1 : 0; } return checkPlugin(newVersion1 ,newVersion2); } for (let i of res.data.content) { if (i.description === 'app版本') {// 1代表app新包版本号大于本地版本号 if (compareVersion(i.dictDetails[0].value, this.version) === 1) { uni.showModal({ title: '提示', content: '发现新的应用安装包,点击确定立即更新', success: function (res) { if (res.confirm) { console.log('用户点击确定');uni.showLoading({title: '更新中……'}) uni.downloadFile({ // 存放最新安装包的地址 url: 'http://xxxx.xxxx.com/__UNI__xxxx.apk', success: (downloadResult) => { uni.hideLoading(); if (downloadResult.statusCode === 200) { uni.hideLoading(); plus.runtime.install(downloadResult.tempFilePath,{ force: false }, function() { console.log('install success...'); plus.runtime.restart(); }, function(e) { uni.hideLoading(); console.error('install fail...'); }); } } }); } else if (res.cancel) { console.log('用户点击取消'); } } }); } else { } } }}});});},
本文链接地址:https://www.jiuchutong.com/zhishi/297687.html 转载请保留说明!

上一篇:基于51单片机的智能台灯设计(基于51单片机的电子秤设计)

下一篇:全网独家首发|极致版YOLOv7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进YOLOv7网络模型(全网首发是什么意思)

  • 华为荣耀10nfc在哪里感应(华为honor10nfc)

    华为荣耀10nfc在哪里感应(华为honor10nfc)

  • 微信连续异常闪退(微信连续异常闪退如何修复苹果手机)

    微信连续异常闪退(微信连续异常闪退如何修复苹果手机)

  • 微信暗黑模式没了(微信打开暗黑模式)

    微信暗黑模式没了(微信打开暗黑模式)

  • 8p13.4.1系统要不要升级(苹果8p13.7系统有必要更新吗)

    8p13.4.1系统要不要升级(苹果8p13.7系统有必要更新吗)

  • fast路由器密码忘记了怎么重新设置(fast路由器密码设置)

    fast路由器密码忘记了怎么重新设置(fast路由器密码设置)

  • 冯依曼型计算机的硬件系统的功能部件(冯依曼型计算机的硬件系统)

    冯依曼型计算机的硬件系统的功能部件(冯依曼型计算机的硬件系统)

  • 华为p40怎么辨别真假(华为p40怎么辨别维修过的机器)

    华为p40怎么辨别真假(华为p40怎么辨别维修过的机器)

  • 淘宝属于腾讯吗(淘宝是不是属于腾讯的)

    淘宝属于腾讯吗(淘宝是不是属于腾讯的)

  • 内存3200和3600的区别(内存3200和3600的性能区别大么)

    内存3200和3600的区别(内存3200和3600的性能区别大么)

  • 微信充天然气多久到账(微信上充天然气费怎么充)

    微信充天然气多久到账(微信上充天然气费怎么充)

  • 手机qq为什么打开又秒退了(手机qq为什么打不开腾讯文档)

    手机qq为什么打开又秒退了(手机qq为什么打不开腾讯文档)

  • 华为手机屏幕中间出现一条竖线(华为手机屏幕中间有个方框)

    华为手机屏幕中间出现一条竖线(华为手机屏幕中间有个方框)

  • 电脑bios是啥意思(电脑bios有什么用处)

    电脑bios是啥意思(电脑bios有什么用处)

  • 小米路由器不稳定解决(小米路由器不稳定 网络断断续续)

    小米路由器不稳定解决(小米路由器不稳定 网络断断续续)

  • 京东货到付款拒收后果(京东货到付款拒收邮费谁来承担)

    京东货到付款拒收后果(京东货到付款拒收邮费谁来承担)

  • ipadpro二代三代区别(ipadpro2020三代和二代)

    ipadpro二代三代区别(ipadpro2020三代和二代)

  • 电视能看wifi不能用(电视能看wifi连接上不能上网怎么办)

    电视能看wifi不能用(电视能看wifi连接上不能上网怎么办)

  • vivo手机电筒怎么打开(vivo手机电筒怎么关闭)

    vivo手机电筒怎么打开(vivo手机电筒怎么关闭)

  • iwatch5和4的区别(iwatch5和iwatch4的区别)

    iwatch5和4的区别(iwatch5和iwatch4的区别)

  • 苹果怎么使用nfc(苹果怎么使用NFC添加门禁卡)

    苹果怎么使用nfc(苹果怎么使用NFC添加门禁卡)

  • 抖音测腿长的特效在哪(抖音测腿长的特效叫什么)

    抖音测腿长的特效在哪(抖音测腿长的特效叫什么)

  • 小米屏幕分辨率在哪(小米13屏幕分辨率)

    小米屏幕分辨率在哪(小米13屏幕分辨率)

  • h5游戏是什么(h5游戏在线玩平台)

    h5游戏是什么(h5游戏在线玩平台)

  • 怎么取消电脑开机密码(怎么取消电脑开机自动启动软件)

    怎么取消电脑开机密码(怎么取消电脑开机自动启动软件)

  • 路由器怎么选择连接模式?选择MW300RM路由器模式的方法(穿墙路由器怎么选择)

    路由器怎么选择连接模式?选择MW300RM路由器模式的方法(穿墙路由器怎么选择)

  • 有限合伙企业属于什么经济类型
  • 银行内部利息支出
  • 培训费用属于
  • 财产租赁合同印花税率多少
  • 企业所得税完税凭证在哪里打印
  • 公户可以在淘宝下单吗
  • 监控系统计入开户费用吗
  • 隔年的费用发票怎样入账
  • 我国的税收管理体制和方向
  • 个人企业属于什么部门管理
  • 纳税人为风险纳税人
  • 公司增资认缴需要什么流程呢怎么办理
  • 工程领用工程物资180万元
  • 增值税即征即退操作流程
  • 预付款和现金支付的区别
  • 拆迁补偿款有退的吗
  • 交了预付款后,一方违约怎么处理
  • 总资产算不算负债
  • 退休返聘工资如何申报个人所得税
  • 电脑主板bios设置
  • 不要运行指定的Windows应用程序怎么设置win10教程
  • 购买交易性金融资产时,支付的交易费用应计入
  • 接受捐赠收入要计入销售收入吗
  • php开发的优点与不足
  • 电脑装系统分区出现错误
  • 其它业务收入是什么科目
  • Windows 11 CO-21H2 22000.194 正式版官方下载地址(附esd微软三语直链下载x64+arm64)
  • 公司出租房屋租赁发票税率
  • 长期借款利息费用的资本化账务处理
  • 新西兰南岛西南部
  • phpmvc框架工作原理
  • php socket 非阻塞
  • 配件买不到
  • ntpdate 命令
  • uniapp跳转页面没反应
  • mnist数据集下载码
  • pytorch创建模型
  • 公司租个人房屋交什么税
  • 公司一直没营业也没报税,会怎样罚款?
  • sql server 创建数据表状态1第三行语法错误怎么回事
  • 无票收入需要缴纳文化事业建设税吗
  • 办理地税手续费
  • 什么情况没有排卵期
  • 事业单位破产清算开户流程
  • 应交税金为负数应该填在资产负债表哪一栏
  • 资本公积的核算维度是什么
  • 发票为什么被列为金额
  • 向投资者分配利润或股利为什么减少所有者权益?
  • 手工账月末结账步骤
  • 未实际收到的投资收益
  • 企业整个月没有缴纳社保
  • 会计软件包括
  • win10安装mysql初始化失败原因
  • win2003远程桌面最大连接数
  • win10 build 21277
  • freebsd操作命令
  • samba开启
  • 快速任务栏
  • win7宽带自动拨号设置
  • ubuntu怎么添加一个新用户
  • linux jdk版本升级
  • linux做raid10
  • mxtask.exe - mxtask是什么进程文件 有什么用
  • win8垃圾清理
  • 滚小球的实验过程和材料
  • cocos2dx小游戏
  • 在布局中使用选定的比例
  • linux awk $1
  • 用滑动门技术设计一幅画
  • Node.js中的construct
  • linux中crontab
  • jquery怎么写
  • jquery的each循环
  • js怎么定义类
  • Python中Collections模块的Counter容器类使用教程
  • 绿牌电动车需要什么条件
  • 河南税务局申报表下载
  • 开电子发票流程步骤
  • 增值税和消费税申报对比不符怎么处理
  • 数码产品关税多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设