uni-app 自动检测版本升级 (安卓)
进入app登录页面检测系统版本是否是新版本,如果不是新版本,下载安装包,安装新版本。
checkVersion() {
try{
let self=this;
console.log("checkVersion");
let params={
"appid": plus.runtime.appid,
"version": plus.runtime.version, //应用版本名称
"imei": plus.device.imei
}
var oldversion = plus.runtime.version;
console.log(params);
//检查是否是新版本
util.post(this.url+'/app/checkAppversion',params).then(res => {
console.log(res);
if(res.data.code=='200'){
if (res.data.data.update==1) {
uni.showModal({
title: oldversion+'版本更新',
content:'检测到新版本,请更新程序',
showCancel: false,
success: function (result) {
if (result.confirm) {
uni.showLoading({
title:'请稍候,安装包下载中...'
})
//self.updateMsg="请稍候,文件下载中..."
console.log(res.data.data.url);
var dtask = plus.downloader.createDownload(res.data.data.url, {}, function ( d, status ) {
uni.hideLoading();
// 下载完成
console.log(d);
if ( status == 200 ) { //下载成功后的回调函数
var path=d.filename;
//安装程序,第一个参数是路径,默认的下载路径在_downloads里面
plus.runtime.install(path,{},function(){
plus.runtime.restart();
},function(){
//self.updateMsg="安装失败"
uni.showToast({
title:'安装失败',
icon: 'none'
})
});
plus.nativeUI.closeWaiting();
} else {
//self.updateMsg= "安装包下载失败 " + status;
uni.showToast({
title:'安装包下载失败' + status,
icon: 'none'
})
}
});
dtask.start();
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
}else{
}
}
}).catch(err => {
console.error(err)
})
}catch(e){}
}
校验版本信息,我这里是直接把新版本信息与安装包路径写在了程序中,后续会迁移到配置文件中,容易管理些。
@PostMapping("/checkAppversion")
public ResultEntity checkAppversion(@RequestBody AppInfo data) {
if(!data.getVersion().equals("1.0.3")){
data.setUpdate("1");
data.setUrl("http://xxx.xxx.x.xxx:8088/pda/pda1.0.3.apk");
}
ResultEntity returnSuccess = returnSuccess(data);
return returnSuccess;
}