uniapp实现app的版本更新
逻辑实现
校验本地设备版本号和服务器版本号,假如本地和服务器的版本号不一致,app初始化的时
候就可以进行更新,这个校验涉及两种,前端校验和后端校验都可行,看个人爱好
流程
flowchart LR
A[请求接口] --> B(接口校验)
B --> C{是否最新版本}
C -->|是| D[更新下载]
C -->|否| E[维持]
代码实现
理解具体代码前,了解以下api
plus.runtime.version //获取设备当前版本号,初始化1.0.0
plus.runtime.install(filePath, options, installSuccessCB, installErrorCB);
参数说明:
filePath //安装的文件路径
options //应用安装设置的参数, force:是否强制安装,默认false
installSuccessCB //成功回调
installErrorCB //失败回调
plus.runtime.restart() 重启当前应用
全部逻辑代码如下
postUrl() {
var _this = this;
uni.request({
url: `****`, //请求接口
method: 'POST',
success: result = >{
console.log(plus.runtime.version) //这一句可获取当前版本号
//中间省略逻辑校验即开始下载,具体看业务场景
this.startUpate(result.data.apkUrl)
},
})
},
startUpate(url) {
uni.showLoading({
title: '更新中……'
}) uni.downloadFile({ //执行下载
url: url,
//下载地址
success: downloadResult = >{ //下载成功
uni.hideLoading();
if (downloadResult.statusCode == 200) {
uni.showModal({
title: '',
content: '更新成功,确定现在重启吗?',
confirmText: '重启',
confirmColor: '#EE8F57',
success: function(res) {
if (res.confirm == true) {
plus.runtime.install( //安装
downloadResult.tempFilePath, {
force: true
},
function(res) {
utils.showToast('更新成功,重启中');
plus.runtime.restart();
});
}
}
});
}
}
});
},
记录完毕,谢谢点赞