位置: 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网络模型(全网首发是什么意思)

  • 荣耀x20怎么设置流量显示(荣耀x20怎么设置热点连接人数)

    荣耀x20怎么设置流量显示(荣耀x20怎么设置热点连接人数)

  • 手机迅雷安装好图标是暗色的(手机迅雷安装不了怎么回事)

    手机迅雷安装好图标是暗色的(手机迅雷安装不了怎么回事)

  • airpods磁铁擦不掉(airpodspro磁铁有问题)

    airpods磁铁擦不掉(airpodspro磁铁有问题)

  • qq自动下载图片怎么关(如何取消qq自动下载图片)

    qq自动下载图片怎么关(如何取消qq自动下载图片)

  • 微信可以人脸识别登录吗(微信可以人脸识别吗)

    微信可以人脸识别登录吗(微信可以人脸识别吗)

  • 小度在家1s无线网连不上(小度无线2021)

    小度在家1s无线网连不上(小度无线2021)

  • 钉钉自动退出怎么回事(钉钉自动退出怎么回事截图)

    钉钉自动退出怎么回事(钉钉自动退出怎么回事截图)

  • 热点和wifi有什么区别(热点和wifi一样吗)

    热点和wifi有什么区别(热点和wifi一样吗)

  • 用户名密码错误是什么意思(电视家庭共享用户名密码错误)

    用户名密码错误是什么意思(电视家庭共享用户名密码错误)

  • 角标怎么打(角标怎么打出来)

    角标怎么打(角标怎么打出来)

  • word加页码怎么设置(word加页码怎么从第二页开始)

    word加页码怎么设置(word加页码怎么从第二页开始)

  • 蜂窝号码是什么意思(蜂窝数据蜂窝号码)

    蜂窝号码是什么意思(蜂窝数据蜂窝号码)

  • 怎样把qq相册传到微信(怎样把qq相册传到电脑上)

    怎样把qq相册传到微信(怎样把qq相册传到电脑上)

  • 快手口令怎么答题(如何把快手口令生成短链接)

    快手口令怎么答题(如何把快手口令生成短链接)

  • ios13设置壁纸(苹果13壁纸怎么设置?)

    ios13设置壁纸(苹果13壁纸怎么设置?)

  • 外部设备必须通过什么与主机相连?(外部设备必须通过什么与主机)

    外部设备必须通过什么与主机相连?(外部设备必须通过什么与主机)

  • word怎么删除不要的页(word怎么删除不想要的整页表格)

    word怎么删除不要的页(word怎么删除不想要的整页表格)

  • 快手换头像为什么闪退(快手换头像为什么还发视频)

    快手换头像为什么闪退(快手换头像为什么还发视频)

  • 拼多多扫码功能在哪(拼多多扫码的地方在哪里)

    拼多多扫码功能在哪(拼多多扫码的地方在哪里)

  • 华为手机怎么关闭小度(华为手机怎么关机重启)

    华为手机怎么关闭小度(华为手机怎么关机重启)

  • 小米9支持双电信卡吗(小米支持双电信卡吗)

    小米9支持双电信卡吗(小米支持双电信卡吗)

  • sdstat.exe - sdstat是什么进程 有什么用

    sdstat.exe - sdstat是什么进程 有什么用

  • 另一种解决Failed to execute goal on project xxx: Could not resolve dependencies for project com的方法(另一种答案)

    另一种解决Failed to execute goal on project xxx: Could not resolve dependencies for project com的方法(另一种答案)

  • YOLOv5内置--hyp超参配置文件对比(yolov5最新版)

    YOLOv5内置--hyp超参配置文件对比(yolov5最新版)

  • 企业所得税的起征点
  • 以公允价值计量计入其他综合收益
  • 流动资金包括哪三种
  • 赔偿支出需要纳税调整吗
  • 企业会计准则可以中途变更吗
  • 有主营业务收入就一定有销项税吗
  • 退休职工怎么填写单位吗
  • 手续费和利息属于哪一科目
  • 农民工工资保证金管理暂行办法
  • 高速公路上的机电一体化有哪些
  • 零售行业的销售员有加班费吗
  • 进项票退回已抵扣税额
  • 自建厂房可以不办理房产证吗
  • 营改增前城建税的税率
  • 应收未收的利息如何处理
  • 跨区域经营增值税所得税预缴多少
  • 简易征收一般纳税人可以收专票吗
  • 德邦物流增值税发票怎么开
  • 净利润亏损怎么结转
  • 减免的土地出让金销项税额可以抵减吗
  • 高新技术企业怎么申报企业所得税
  • 外国人的纳税人识别号是护照号吗
  • 投资决策中常用的指标有
  • 公司股权转让的税费处理
  • 土地使用权出让金收费标准
  • 不含税进货价
  • 如何开启windows10云服务
  • win11重置系统保留我的文件
  • 连续亏损的公司还要去吗
  • 冲减预交的增值税税率
  • BIOS里没有USB-HDD选项
  • 电脑虚拟内存不够
  • linux 密码重置
  • win10如何禁止
  • 退货发票会作废吗
  • PHP:apache_request_headers()的用法_Apache函数
  • 支票的提示付款期限为自出票日期
  • yolov3输出是什么
  • 老老实实的人
  • php反射机制实现自动依赖注入
  • 公司主营业务怎么介绍
  • 母子公司之间的租赁房屋
  • 安全生产责任险是强制险吗
  • wordpress技巧
  • php生成器和迭代器理解
  • 增值税进项加计抵减怎么计算
  • 新办企业装修会计分录
  • 财务报表的填写要求
  • 车保险名称
  • 已纳消费税扣除会计分录
  • 记账错误是什么意思
  • 个人转租房屋需要交房产税吗
  • 收购其他公司支付利润
  • 未认证的进项税额转出会计分录
  • 工资扣税是减去五险一金吗
  • 现金支付的范围包括
  • 应缴纳房产税的房产
  • 发票没有银行账号可以吗
  • 美国支票名字不一致
  • MySQL利用不同的流程语句输出1到200的和
  • mysql修改后立即查询
  • mysql密码怎么找回
  • 勒索病毒2021
  • ubuntu x
  • win8.1和win10哪个好用
  • thinkpade431升级内存多大好
  • cocos2dx ui编辑器
  • 怎么申请返回
  • 在dos下运行
  • pythonista pygame
  • shell 数组操作
  • unity3d脚本怎么用
  • 解决跨域的原理
  • android英语
  • android studio如何用安卓手机模拟
  • jquery easyui从零开始学pdf
  • 国家税务总局河南省税务平台
  • 空调设备税率多少钱
  • 公对私转账怎么开票
  • 环保税申报流程视频
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设