文章目录

  • 一、App 版本自动升级
    • 1、Uniapp 前端实现
    • 2、SpringBoot 后端实现
  • 技术分享区

一、App 版本自动升级

Uniapp 的官方也提供了 App 升级的支持,升级中心 uni-upgrade-center,但是由于需要使用云端基于 uniCloud 云函数实现,对于项目来说,又多了一个服务端,管理起来较为麻烦,所以我们还是自定义版本自动升级,也方便实际开发中进行调整

此模块的代码可能还要调整一下,感觉比较繁琐

1、Uniapp 前端实现

common/checkappupdate.js

import request from "@/utils/common.js";
import config from '../config.js'function check(param = {}) {// 合并默认参数param = Object.assign({title: "检测到有新版本!",content: "请升级app到最新版本!",canceltext: "暂不升级",oktext: "立即升级"}, param)plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {let platform = plus.os.name.toLocaleLowerCase()request.request('/app/versionConfig/getCurrent', {}, 'get', function (result) {let data = result.data ? result.data : null;if (widgetInfo.version === data.versionCode) {return;}if (result.code == 200) {if (platform == 'ios') {// 如果是ios,则跳转到appstoreplus.runtime.openURL(result.data.data.url)return;}// android进行如下操作uni.showModal({title: param.title,content: data.log ? data.log : param.content,showCancel: data.force ? false : true,confirmText: param.oktext,cancelText: param.canceltext,success: res => {if (!res.confirm) {console.log('取消了升级');plus.runtime.quit();}if (data.shichang === 1) {//去应用市场更新plus.runtime.openURL(data.shichangurl);plus.runtime.restart();} else {// 清除缓存request.clearLogin();// 开始下载// 创建下载任务var dtask = plus.downloader.createDownload(config.baseUrl + data.versionUrl, {filename: "_downloads/"},function (d, status) {// 下载完成if (status == 200) {plus.runtime.install(d.filename, {force: true}, function () {//进行重新启动;plus.runtime.restart();}, (e) => {uni.showToast({title: '安装升级包失败:' + JSON.stringify(e),icon: 'none'})});} else {this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +status);}});let view = new plus.nativeObj.View("maskView", {backgroundColor: "rgba(0,0,0,.6)",left: ((plus.screen.resolutionWidth / 2) - 45) +"px",bottom: "80px",width: "90px",height: "30px"})view.drawText('开始下载', {}, {size: '12px',color: '#FFFFFF'});view.show()dtask.addEventListener("statechanged", (e) => {if (e && e.downloadedSize > 0) {let jindu = ((e.downloadedSize / e.totalSize) *100).toFixed(2)view.reset();view.drawText('进度:' + jindu + '%', {}, {size: '12px',color: '#FFFFFF'});}}, false);dtask.start();}}})}})});
}export default {check
}

App.vue 中调用检查更新

<script>import checkappupdate from 'common/checkappupdate.js'export default {onLaunch: function () {checkappupdate.check({title: '检测到有新版本!',content: '请升级app到最新版本!',canceltext: '暂不升级',oktext: '立即升级'});}}
</script>

2、SpringBoot 后端实现

我的后端表格设计比较简单,是否当前版本设计的比较简单,方便回滚版本

相应的SQL语句

drop table if exists biz_version_config;/*==============================================================*/
/* Table: biz_version_config                                     */
/*==============================================================*/
create table biz_version_config
(id                   int(11) not null auto_increment comment '主键',version_code         varchar(255) comment '版本号',version_url          varchar(255) comment '下载地址',version_remark       varchar(255) comment '版本备注',is_current           int(11) comment '当前版本 1-是 2-否',create_by            varchar(64) default '' comment '创建者',create_time          datetime comment '创建时间',update_by            varchar(64) default '' comment '更新者',update_time          datetime comment '更新时间',status               tinyint(1) comment '状态 1-正常2-删除',primary key (id)
)
ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COMMENT = 'app版本配置' ROW_FORMAT = Dynamic;alter table wm_version_config comment 'app版本配置';

然后就是后端的版本管理CRUD,这里就不在一一阐述了,还要增加有个接口,查询当前版本,条件直接使用

where is_current = 1

技术分享区

【Uniapp】Uniapp 实现 App 版本自动升级相关推荐

  1. android 系统(143)---Android实现App版本自动更新

    Android实现App版本自动更新 现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器 ...

  2. c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down...

    c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down http://blog.csdn.net/delphizhou/article/details/30 ...

  3. 【uniapp】uniapp安卓APP在线自动升级功能

    纯前端实现uniapp写的安卓APP跟IOS在线自动升级功能 关于Uniapp自动升级用到的阿里云要收费的问题 使用的UI框架为UVIEW2.0 用到的请求等 总结下思路 就是通过获取XML文件返回来 ...

  4. iOS APP版本自动更新

    1.版本自动更新一般采用API对应的方式 获取当前App Store上版本号 于本地存储的版本号对比 2.由服务端返回版本控制升级(容易审核不通过) 参考地址(很详细) https://blog.cs ...

  5. mfc 更新服务器文件,MFC程序版本自动升级更新

    1.自动升级需要实现两个exe程序的交替启动,需要一个主程序和一个升级程序:在一个解决方案中创建两个项目,一个是你的主程序,另一个为你的升级程序:第二个程序创建选择添加到解决方案,同时选中你要添加的位 ...

  6. Android实现App版本自动更新

    现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器返回的App版本与当前手机安装的版本号 ...

  7. windows下jdk版本自动升级

    今天在远程服务器上运行jar包时发现总是无法运行,查看了服务器的jdk版本发现过低,需升级一下,但是又不想更改路径和环境变量配置,于是选择jdk的自动升级. 工具/原料 电脑 windows操作系统 ...

  8. uniapp打包安卓APP实现自动更新(更新app)

    先列出需要注意的地方,避免新手朋友们出错 如果uniapp运行app报错:ReferenceError: plus is not defined ,普通浏览器里没有plus环境,只有HBuilder真 ...

  9. whmcs不依赖index.php的方法,WHMCS版本自动升级方法

    WHMCS是一套专为主机业务开发集客户管理.财务和帮助系统于一身的在线交易软件.从注册开通到终止的整个过程,WHMCS都提供了强大的交易自动化模块,帮助主机商全权管理交易.WHMCS平台为了安全不断升 ...

  10. macOS10.13.6及以下版本不能自动升级到更高版本的解决方案

    我习惯了在App Store自动升级macOS.XCode.苹果手机iOS系统升级.最近我升级了我的iphone xr到iOS 12.2版本.真机调试时,提示需要XCode升级到10.2版本才能使用. ...

最新文章

  1. 又一款4800像素手机曝光:vivo V15 Pro
  2. linux磁盘管理相关命令,Linux | 磁盘管理命令
  3. Linux的Nginx二:代理
  4. kvm虚拟化存储管理(3)
  5. 【南京】.Net 开源基础服务线下技术交流会
  6. DataGridView控件中显示图片及其注意事项 【z】
  7. LeetCode 643. 子数组最大平均数 I
  8. chimerge算法matlab实现,有监督的卡方分箱算法
  9. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(5) - 8086/16位指令寻址字节
  10. 360深度实践:Flink 与 Storm 协议级对比
  11. 开篇: 高扩展网页制作平台 码良的正确打开方式
  12. ERROR: Maven JVM terminated unexpectedly with exit code 137
  13. 线性回归与非线性回归
  14. CNN原理及模型参数
  15. Android 常用正则表达式,阿里巴巴内部spring宝典意外流出
  16. 163邮箱自动化登录实现模块化【3】
  17. 小笨霖英语笔记本七十七
  18. 计算方法之非线性方程组求解
  19. 离群值是什么意思_学术必备!代谢组学及数据分析相关问题汇总
  20. 学习机器学习四 回归模型——线性回归、L1正则化(Lasso回归)、L2正则化(ridge回归)

热门文章

  1. 相控阵天线面阵方向图(FFT变换)
  2. fudanNLP keyword Extraction
  3. Studio 3T过期了的解决办法,亲测有效
  4. 屡败屡战,攻克中项(系统集成项目管理师考试经历分享)
  5. JQuery库BootStrap框架完整模板.html
  6. 关于三极管的理解---根据IC符号简易迅速判断三极管导通情况
  7. golang读取pdf
  8. 朱加强计算机网络技术,深入对比三种标准拓扑结构
  9. 不服!女性为何成为科技领域的“隐形人”?讲讲崛起中的“她”力量
  10. 菲尼克斯交换机FL SWITCH SFN 5TX