需求概述: 最近遇到的需求,扫码核验的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 {}}}}});});
},

uniapp 实现app自动更新相关推荐

  1. Uniapp 实现app自动更新功能

    APP.vue文件中 <script>export default {data: function() {return {version: "1.5.4"//版本号}} ...

  2. uniapp之app自动更新

    cmd-progress.vue <!-- 版本升级弹窗开始 --><uni-popup ref="promotion" type="center&qu ...

  3. web app升级—带进度条的App自动更新

    带进度条的App自动更新,效果如下图所示:   技术:vue.vant-ui.5+ 封装独立组件AppProgress.vue: <template><div><van- ...

  4. Android App自动更新解决方案(DownloadManager)

    Android App自动更新解决方案(DownloadManager) 参考文章: (1)Android App自动更新解决方案(DownloadManager) (2)https://www.cn ...

  5. android通知栏应用程序更新,Android App自动更新之通知栏下载

    本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下 版本更新说明 这里有调用UpdateService启动服务检查下载安装包等 1. 文件下载,下完后写入 ...

  6. 安卓APP自动更新实现

    一.参考文献 简单实现安卓app自动更新功能 - 简书 安卓app自动更新功能完美实现_白云天的博客-CSDN博客_android 自动更新 Android 实现自动更新及强制更新功能_farley的 ...

  7. flutter APP自动更新

    flutter APP自动更新 前言 在pubspec.yaml中安装依赖 在main.dart文件中,初始化FlutterDownLoader 配置网络 在AndroidManifest.xml新增 ...

  8. Android如何实现APP自动更新

    先来看看要实现的效果图: 对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP ...

  9. 安卓APP自动更新功能实现

    安卓APP自动更新功能实现 前言 代码实现 前言 安卓App自动更新基本上是每个App都需要具备的功能,接下来介绍一下实现自动更新的步骤. 代码实现 App自动更新主要分为新版本检测.升级弹窗.下载升 ...

最新文章

  1. 支付宝AI摘下视觉竞赛世界冠军,能精准区分同种类物体的细微差别
  2. JAVA层HIDL服务的获取原理-Android10.0 HwBinder通信原理(九)
  3. 修改Eclipse发布路劲(Deploy path)
  4. OVS datapath包处理流程(二十)
  5. Rotate List
  6. sql sum嵌套查询+ group by
  7. 其实大学老师在剑桥读博士,好像录取不难
  8. Qt Creator制作动画
  9. 15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系
  10. oracle可以在liux上装_【Oracle】手把手教你做之Linux上安装Oracle11g
  11. wpf加载上千张图片部分图片不显示_开源WPF控件库MaterialDesignInXAML推荐
  12. css3浏览,css3支持哪些浏览器?
  13. oracle pdb还原为no-cdb,oracle 12c中CDB和PDB的备份还原实验
  14. pix2pix损失函数理解(精)
  15. @程序员,计算机重启包治百“病”?
  16. 第45届国际大学生程序设计竞赛(ICPC)沈阳站太原理工大学收获1枚铜牌
  17. 算法:Reverse String(反转字符串)
  18. 仿生机制算法——细胞吸引子模型(附Matlab代码)
  19. EGO1—UART串行接口设计及通信的实现
  20. 快速幂算法(qwe)

热门文章

  1. 性格内向的人要如何进行沟通口才培训?
  2. 解决qrcode生成的二维码华为手机长按不识别、toDataURL之后中间logo丢失等问题
  3. 【智能驾驶】如何制作一辆真正的无人驾驶汽车
  4. VSD?啥是VSD?VSD应用场景你知道吗?
  5. TeamViewer,让远程管理触手可及
  6. 前端框架选型调研报告
  7. mysql高可用面试题_MySQL - MySQL面试题
  8. mysql select查询字段_MySQL基础:SELECT查询语句
  9. List 集合去重方式与 java8新特性stream去重
  10. iOS 打开照相机与本地相册选择图片