onLoad() {
this.getAppVersion(); //获取版本号
},
methods:{
getAppVersion() { //热更新(获取本机版本号)
let self = this
// self.getHttpVersion('1.0.0'); //热更新(获取线上版本号)
// #ifdef APP-PLUS-NVUE || APP-NVUE || APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
let appVersion = wgtinfo.version;
self.getHttpVersion(appVersion); //热更新(获取线上版本号)
})
// #endif
},
getHttpVersion(appVersionNumber) { //热更新(获取线上版本号)
let self = this;
$tools.axiosFrom('GET', '', {}).then(res => {
// console.log(,'热更新(获取线上版本号)',res)
if (res.code==0&&res.data) {
let apkurl = ''; //安装包地址
let versionNumber = ''; //设备版本号
let isForce = 0; //是否开启强更新
let strideVersion = ''; //强更新跨越版本
if (uni.getSystemInfoSync().platform=='ios') { //苹果
if(res.data.ios_list&&res.data.ios_list.version_number&&res.data.ios_list.version_url) {
versionNumber = res.data.ios_list.version_number; //设备版本号
apkurl = res.data.ios_list.version_url; //地址
isForce = res.data.ios_list.is_force||0;//强更新状态
strideVersion = parseInt(res.data.ios_list.stride_version||0);//强更新跨越版本
}
} else if(uni.getSystemInfoSync().platform=='android') { //安卓
if(res.data.android_list&&res.data.android_list.version_number&&res.data.android_list.version_url) {
versionNumber = res.data.android_list.version_number; //设备版本号
apkurl = res.data.android_list.version_url; //地址
isForce = res.data.android_list.is_force||0;//强更新状态
strideVersion = parseInt(res.data.android_list.stride_version||0);//强更新跨越版本
}
}
// console.log(parseInt(versionNumber.split('.').join("")),parseInt(appVersionNumber.split('.').join("")),apkurl)
if (apkurl && versionNumber) {
let versionNumbeA = parseInt(versionNumber.split('.').join(""));
let appVersionNumbeA = parseInt(appVersionNumber.split('.').join(""));
// console.log('[demo]',versionNumbeA,appVersionNumbeA,strideVersion)
if (versionNumbeA > appVersionNumbeA) {
if((versionNumbeA-appVersionNumbeA)>strideVersion) {
isForce=1;
}
if(isForce==1&&uni.getSystemInfoSync().platform=='ios') {//强更新苹果
this.iosForceUpdate();//苹果强制更新
return false;
} else {
let obj = {
hotUpdateApkurl:apkurl,//线上下载地址
hotUpdateVersionNumber:versionNumber,//线上版本号
hotUpdateAppVersion:appVersionNumber,//本地版本号
isForce:isForce,//强更新状态
}
}
}
}
}
})
},
iosForceUpdate() {//苹果强制更新
uni.showModal({
title: '新版本更新',
content: '点击确定前往应用市场下载最新版本。',
showCancel:false,
success: (res) => {
if (res.confirm) {
let appUrl = 'itms-apps://itunes.apple.com/cn/app/XXX?mt=8';// XXXX为对应的AppID
plus.runtime.openURL(appUrl);
} else if (res.cancel) {
}
this.iosForceUpdate();//重新打开
}
});
},
startUpdate() {//开始热更新
let self = this;
this.progreShow=true;//显示开启下载
let apkurl = this.versionInfo.hotUpdateApkurl;//线上下载地址
this.downloadTask = uni.downloadFile({ //执行下载
url: apkurl, //下载地址
success: (downloadResult) => {
console.log('[下载成功]',downloadResult);
if (downloadResult.statusCode == 200) {
self.succesDownRuntim(downloadResult.tempFilePath);//前往安装
}
},
fail: (err) => {
uni.showToast({ title:'下载已终止',icon:'none' })
}
})
this.downloadTask.onProgressUpdate((res) => {
this.progrePercentage = res.progress;//下载进度
this.progreTotalBytesWritten = parseFloat((Math.abs(res.totalBytesWritten/1024/1024)||0).toFixed(2));//已经下载的数据长度
this.progreTotalBytesExpectedToWrite = parseFloat((Math.abs(res.totalBytesExpectedToWrite/1024/1024)||0).toFixed(2));//预期需要下载的数据总长度
});
},
succesDownRuntim(tempFilePath) {//前往安装
// console.log('[前往安装]',tempFilePath);
plus.runtime.install(
tempFilePath,
{force: true},
function(rertrrtt) {
// console.log('[前往安装]',tempFilePath.split('.') && tempFilePath.split('.')[tempFilePath.split('.').length -1]);
if (tempFilePath && tempFilePath.split('.') && tempFilePath.split('.')[tempFilePath.split('.').length -1] == 'wgt') { //wgt包
setTimeout(() => {
plus.runtime.restart();
},500)
}
},
)
},
}
uniapp 热更新
最新推荐文章于 2024-04-10 10:48:38 发布