位置: IT常识 - 正文

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

发布时间:2024-01-16
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网络模型(全网首发是什么意思)

  • 华为p50pro怎么设置闹钟铃声(华为p50pro怎么设置门禁卡)

    华为p50pro怎么设置闹钟铃声(华为p50pro怎么设置门禁卡)

  • vivos9支持的5G频率有哪些(vivos9支持几个5g频段)

    vivos9支持的5G频率有哪些(vivos9支持几个5g频段)

  • 火车票订单取消三次还可以买票吗(火车票订单取消了但付款成功)

    火车票订单取消三次还可以买票吗(火车票订单取消了但付款成功)

  • 华为nova7拍照模糊(华为nova7拍照模式的小文子不见了)

    华为nova7拍照模糊(华为nova7拍照模式的小文子不见了)

  • 红外线加热与普通加热的区别(红外线加热优缺点)

    红外线加热与普通加热的区别(红外线加热优缺点)

  • 19课堂有电脑版吗(19课堂app怎么样)

    19课堂有电脑版吗(19课堂app怎么样)

  • 微信朋友圈仅对你可见是什么意思(微信朋友圈仅对方可见,对方知道吗)

    微信朋友圈仅对你可见是什么意思(微信朋友圈仅对方可见,对方知道吗)

  • 苹果手机的水印设置在哪里可以找到(苹果手机的水印相机在哪里设置)

    苹果手机的水印设置在哪里可以找到(苹果手机的水印相机在哪里设置)

  • 苹果手机充电指示灯怎么设置(苹果手机充电指示灯不亮)

    苹果手机充电指示灯怎么设置(苹果手机充电指示灯不亮)

  • 图片过期或已被清理是什么意思(图片过期或已被清理是怎么回事)

    图片过期或已被清理是什么意思(图片过期或已被清理是怎么回事)

  • oppopact00是什么型号(oppopact00手机报价)

    oppopact00是什么型号(oppopact00手机报价)

  • 毒的购买记录能删吗(毒的购买记录是真的吗)

    毒的购买记录能删吗(毒的购买记录是真的吗)

  • word设置中英文字体(word设置中英文字体怎么设置)

    word设置中英文字体(word设置中英文字体怎么设置)

  • dbms的6个主要功能(dbms的主要功能是什么)

    dbms的6个主要功能(dbms的主要功能是什么)

  • p30pro红外传感器有什么用(华为p30 pro红外传感器是干什么的)

    p30pro红外传感器有什么用(华为p30 pro红外传感器是干什么的)

  • oppor15x怎么设置呼吸灯(oppoR15X怎么设置语音唤起小布)

    oppor15x怎么设置呼吸灯(oppoR15X怎么设置语音唤起小布)

  • 苹果8闹钟设置仅震动(苹果闹钟设置声音)

    苹果8闹钟设置仅震动(苹果闹钟设置声音)

  • 私人影视有没有摄像头(私人影视有没有锁)

    私人影视有没有摄像头(私人影视有没有锁)

  • 小米8是双卡双待么(小米8是双卡双待手机吗)

    小米8是双卡双待么(小米8是双卡双待手机吗)

  • vivoy93的返回键在哪(vivoy93返回键在哪)

    vivoy93的返回键在哪(vivoy93返回键在哪)

  • 美颜相机怎么设置九宫格拍照(美颜相机怎么设置广角模式)

    美颜相机怎么设置九宫格拍照(美颜相机怎么设置广角模式)

  • 手机个人中心设置在哪(手机个人中心设置在哪里找)

    手机个人中心设置在哪(手机个人中心设置在哪里找)

  • 水平居中怎么设置(水平居中怎么设置word)

    水平居中怎么设置(水平居中怎么设置word)

  • 华为运动健康怎么使用(华为运动健康怎么关闭锁屏显示)

    华为运动健康怎么使用(华为运动健康怎么关闭锁屏显示)

  • 小米手环怎么和微信运动同步(小米手环怎么和手机配对)

    小米手环怎么和微信运动同步(小米手环怎么和手机配对)

  • 嘀嗒乘客不确认怎么办(嘀嗒乘客不确认行程)

    嘀嗒乘客不确认怎么办(嘀嗒乘客不确认行程)

  • ddhelper32.exe进程安全吗.是病毒吗 ddhelper32是什么进程(tdxcef.exe进程)

    ddhelper32.exe进程安全吗.是病毒吗 ddhelper32是什么进程(tdxcef.exe进程)

  • 分支机构设立当年是否需要就地预缴企业所得税?
  • 完工产品成本计入什么科目
  • 发票第二年是否可以作废
  • 怎么用两台电脑测试网线
  • 银行电子承兑汇票怎么转让
  • 研发费用计入销售费用
  • 没有工会 还需要交钱吗
  • 月末在产品的原材料定额费用计算公式
  • 偶然所得个税怎么计算公式
  • 预计负债计提时调减还是调增
  • 酒店怎么付钱
  • 国外人员劳务费怎么算
  • 银行已扣社保会计分录怎么做
  • 17点增值税发票能开吗
  • 通行费发票如何开具
  • 进项票异常如何自查
  • 账面价值大于计税基础产生什么差异
  • 工程款增值税怎么算
  • 纳税人状态怎么填写
  • 公司店铺刷单的收入怎么记账
  • 商业承兑汇票申请流程
  • 购买转账支票费用
  • bios中英文对照表图新版
  • 预收账款可以挂账多久要交税
  • 安卓系统详解
  • 建筑业预缴企业所得税税率是多少
  • 实例讲解yii2.0在php命令行中运行的步骤
  • 一个药厂能够生产药品的三个前提条件
  • mac的快捷键在哪
  • 修改远程桌面端口脚本
  • php字符串定义
  • 根据完工进度确认成本
  • 运输发票符合什么要求
  • 万年青的养殖方法和注意事项盆栽
  • php的session
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • 基于php技术
  • 未担保余值是谁承担
  • php 通信
  • 以前年度的销售退回,冲减哪年的
  • 时域卷积图解法
  • php连接redis集群
  • 中标费用入什么科目
  • 增值税进项发票不够抵扣怎么办
  • 研发费用没有发票怎么做账
  • 织梦怎么样
  • mysqldump导入数据库
  • 法院对行政机关罚款
  • 小规模公司都交哪些税
  • 用sql语句查找年龄大于20
  • 待抵扣进项税如何在营运资金
  • 企业应付职工薪酬的会计核算
  • 预付卡销售成品油会计分录
  • 产品检测费怎么入账
  • 购买职工福利
  • 优秀员工奖金领取表模板
  • 没开发票能确认没开发票能确认收入申报纳税吗?
  • 外贸企业的退税可以转出来吗
  • 年底盈利但有往年亏损怎么处理
  • 实际验收入库是什么科目
  • 一般纳税人出现以下哪些情况时,其进项税额不得抵扣( )
  • 合同章盖成公章
  • 公司想自己开发票怎么申请
  • 支付宝如何支付医保费用
  • sql server语句查询
  • sqlserver数据库备份
  • 查找共享打印机所在的电脑
  • 苹果电脑win10系统打不开
  • winpatrol.exe - winpatrol是什么进程
  • win8怎么打开系统设置
  • 技术故事是什么意思
  • javascript的区别
  • python迭代器的作用
  • perl里怎么对数组实现一次遍历
  • qt绘制3d
  • vue复用node_module
  • shell脚本windows
  • javascript data
  • javascript程序设计教程
  • 异地社保如何在本地使用医保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号