},
isUpdate(curVersion,serVersion){ // 判断是否需要更新
let [serArray,curArray] = [serVersion.split("."),curVersion.split(".")]
if(parseInt(serArray[0]) > parseInt(curArray[0])){android最新版
return true
}else if(parseInt(serArray[1]) > parseInt(curArray[1])){
return true
}else if(parseInt(serArray[1]) >= parseInt(curArray[1]) && parseInt(serArray[2]) > parseInt(curArray[2])){ return true
}else{
return false
}
},
computedVersion(version){ // 计算版本
let array = version.split(".");
let sum = 0;
sum += array[0]*10
sum += array[1]+array[2]
return sum;
},
getServerVersion(){ // 获取服务器版本
if(!this.autoChangeUpdate){
uni.showLoading({
title:"检测更新"
})
}
this.$ajax("index/apiUpdateVersion",{}).then(res=>{
uni.hideLoading()
de == 200){
this.updateInfo = res.data
Property(plus.runtime.appid, function(wgtinfo) {
// 获取当前app版本
_this.version = wgtinfo.version;
console.SystemInfoSync().platform)
/
/ 判断⼿机类型
switch (SystemInfoSync().platform) {
case 'android':
if (_this.isUpdate(_this.version,res.data.android_version)) {
_this.serverVersion = res.data.android_version;
_this.clientType = 'android'
_this.show()
uni.hideTabBar();
}else{
if(!_this.autoChangeUpdate){
_this.$toast("当前已是最新版本")
}
}
break;
case 'ios':
if (_this.isUpdate(_this.version,res.data.ios_version)) {
_this.serverVersion = res.data.ios_version;
_this.clientType = 'ios'
_this.show()
uni.hideTabBar();
}else{
if(!_this.autoChangeUpdate){
_this.$toast("当前已是最新版本")
}
}
break;
}
// _this.$emit('isUpdata',false)
});
}else{
this.$toast(res.data.msg)
}
})
},
updateApp(){ // 更新app
let version = this.version.split('.');
let updateVersion = this.serverVersion.split('.');
this.hide()
// ⼤更新
if (parseInt(updateVersion[0]) > parseInt(version[0])) {
if (parseInt(updateVersion[0]) > parseInt(version[0])) {
if(_this.clientType == 'android'){
console.log(_this.clientType)
console.log(this.updateInfo.android_url)
this.downApp(this.updateInfo.android_url,'bigUpdate');
}else{
plus.runtime.openURL(this.updateInfo.ios_url)
}
} else if (parseInt(updateVersion.join('.').replace(/\./g, '')) > parseInt(version.join('.').replace(/\./g, ''))) { //⼩更新 // 热更新
this.downApp(this.updateInfo.hot_update,'thermalRenewal');
}
},
downApp(url,updateType){
// ⽂件⼤⼩
let fileSize = '';
if(updateType == 'bigUpdate'){
fileSize = this.updateInfo.android_url_file_size;
}else{
fileSize = this.updateInfo.hot_update_file_size;
}
fileSize = parseFloat(fileSize) * 1024 * 1024
console.log(fileSize)
let waiting = plus.nativeUI.showWaiting('下载中...');
// 创建下载任务
let dtask = ateDownload(url,{
filename: '_doc/update/' // ⽂件下载保存路径
},function(d, status) {
console.log(status,5555)
if (status == 200) {
console.log(status,'.............')
waiting.setTitle('安装中...');
// 下载成功
plus.runtime.install(d.filename, {}, function() {
plus.nativeUI.closeWaiting();
plus.nativeUI.alert('更新完成!', function() {
uni.showTabBar();
// 清除所有下载的包
plus.downloader.clear(-1);
// 热更新⾃动安装
if(updateType == 'thermalRenewal'){
start();
}
});
}, function(e) {
plus.nativeUI.closeWaiting();
plus.nativeUI.alert('安装失败[' + e.code + ']:' + e.message);
});
} else {
/
/下载失败
plus.nativeUI.alert('下载失败!');
setTimeout(()=>{
plus.nativeUI.closeWaiting();
},1000)
if(updateType == 'bigUpdate'){
plus.runtime.openURL(url) //打开⽹页⼿动下载
}
}
})
// 监听下载状态
/
/ dtask.addEventListener("statechanged", function(download, status) {
// // console.log(`监听:下载状态${status}`)
// if (status == 200) {
// let i = download.downloadedSize
// i *= 100 / fileSize;
// console.log(`监听:下载⼤⼩${i}`)
// if(!isNaN(i)){
// i = parseInt(i)
// waiting.setTitle('已下载 ' + i + "%");
// // waiting.setTitle(i);
// }
/
/ }else if(status == 404){
// plus.nativeUI.closeWaiting();
// ast("下载地址错误")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论