1、App.vue文件
<script>
import appUpdate from '@/util/appUpdate.js'
onLaunch: function() {
uni.getSystemInfo({
success: function(e) {
// #ifdef APP-PLUS
// 检测升级
appUpdate()
// #endif
}
}
}
</script>
2、appUpdate.js文件
//APP更新
import { http } from '@/common/service/service.js'
export default function appUpdate() {
uni.request({
url: 'http://2.34.4.2/update/update.json', //检查更新的服务器地址
data: {
appid: plus.runtime.appid,
version: plus.runtime.version,
imei: plus.device.imei
},
success: (res) => {
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
let client_version = wgtinfo.version
// var flag_update = client_version.split(".").splice(0, 2).join(".") != JSON.parse(res.data.version).split(".").splice(0, 2)
// .join(".")
var flag_update = client_version.split(".").splice(0, 2).join(".") != res.data.version.split(".").splice(0, 2)
.join(".")
var flag_hot = (Number(client_version.split(".")[2]) < Number(res.data.version.split(".")[2])) & !flag_update
console.log(res.data.version)
console.log(client_version)
console.log(flag_update)
console.log(flag_hot)
if (flag_update) {
// 提醒用户更新
uni.showModal({
title: '更新提示',
content: res.data.note,
success: (showResult) => {
if (showResult.confirm) {
plus.nativeUI.toast("正在准备环境,请稍后!");
var dtask = plus.downloader.createDownload(res.data.url, {
method: 'GET',
filename: '_doc/update/'
}, function(d, status) {
if (status == 200) {
var path = d.filename; //下载apk
plus.runtime.install(path); // 自动安装apk文件
} else {
plus.nativeUI.alert('版本更新失败:' + status);
}
});
try { //加载进度显示
dtask.start(); // 开启下载的任务
var prg = 0;
var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象
dtask.addEventListener('statechanged', function(
task,
status
) {
// 给下载任务设置一个监听 并根据状态 做操作
switch (task.state) {
case 1:
showLoading.setTitle("正在下载");
break;
case 2:
showLoading.setTitle("已连接到服务器");
break;
case 3:
prg = parseInt(
(parseFloat(task.downloadedSize) /
parseFloat(task.totalSize)) *
100
);
showLoading.setTitle(" 正在下载" + prg + "% ");
break;
case 4:
plus.nativeUI.closeWaiting();
//下载完成
break;
}
});
} catch (err) {
plus.nativeUI.closeWaiting();
uni.showToast({
title: '更新失败-03',
mask: false,
duration: 1500
});
}
// dtask.start();
}
}
})
} else if (flag_hot) {
uni.downloadFile({
url: res.data.wgtUrl,
success: (downloadResult) => {
if (downloadResult.statusCode === 200) {
// plus.nativeUI.toast(`正在热更新!${res.data.versionCode}`);
plus.nativeUI.toast(`正在热更新!${res.data.version}`);
plus.runtime.install(downloadResult.tempFilePath, {
force: true
}, function() {
plus.nativeUI.toast("热更新成功");
plus.runtime.restart();// 安装成功后重启
}, function(e) {
console.log(e)
plus.nativeUI.toast(`热更新失败:${e.message}`);
});
}
},
fail: (err) => {
console.log('下载失败', err)
}
});
}
});
}
})
}
标签:function,uniapp,res,version,plus,进度,nativeUI,data,下载
From: https://www.cnblogs.com/axingya/p/17677574.html