// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, (info) => {
console.log('现在的版本为', info)
const version = info.versionCode
const _this = this
uni.request({
url: miao + 'version/pull',
method: 'GET',
success: res => {
console.log('最新的版本为222', res.data)
if (res.data.success) {
const versionName = res.data.data.versionName
console.log('现在的版本为', version, '最新的版本为', versionName)
if (versionName > version && !!res.data.data.fileLink) {
uni.showModal({
title: '提示',
content: '发现有新版本可以升级',
confirmText: '立即更新',
showCancel:false,
success: res1 => {
if (res1.confirm) {
let replacedUrl = res.data.data.fileLink;
let updatedString = replacedUrl.replace("xxx.x.x.x");//本地id
let versionDesc = parseFloat( res.data.data.versionDesc ) ;
_this.show = true // show变量控制一个下载进度弹框(这个UI样式自己写即可)
let dtask = plus.downloader.createDownload(updatedString, {},function(d, status) {
// 下载完成
if (status == 200) {
_this.show = false // 下载完成再把下载进度弹框关闭即可
uni.showModal({
title: '提示',
content: '更新成功',
showCancel: true,
// cancelText: '取消',
confirmText: '重启',
showCancel:false,
success: function(res3) {
if (res3.confirm) {
// 用户点击了确定按钮
console.log('用户点击了确定');
plus.runtime.restart()
} else if (res3.cancel) {
// 用户点击了取消按钮
console.log('用户点击了取消');
}
}
});
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {},
function(error) {
uni.showToast({
title: '安装失败',
duration: 1500
});
})
} else {
uni.showToast({
title: '更新失败',
duration: 1500
});
}
});
console.log('用户点击确定.',replacedUrl, Math.floor(versionDesc * 1024),dtask);
dtask.start(); // 下载任务开始下载
// 关于进度的获取是使用定时器不断获取已经下载的文件的大小,再对比总大小即可
let timer = setInterval(() => {
let percent = (dtask.downloadedSize / Math.floor(versionDesc * 1024) ).toFixed(2) // fileSize文件总大小,后端返回的
_this.percentVal = Math.floor(percent * 100) // 转成整数展示
if(_this.percentVal>=100){
_this.percentVal = 100
}
uni.showLoading({
title: '更新中...'+ _this.percentVal +'%',
mask: true,
});
console.log('_this.percentVal',_this.percentVal,dtask.downloadedSize)
if (percent >=1) { // 注意百分比,及时清除定时器即可
uni.hideLoading();
clearInterval(timer)
}}, 18)
} else if (res1.cancel) {
console.log('用户点击取消');
}
},
fail: (err) => {
console.log('下载失败', err);
}
});
}
}
}
})
})
// #endif
app热更新
于 2024-07-05 15:23:01 首次发布