代码来源
另:极力推荐官方的upgrade-center https://uniapp.dcloud.io/uniCloud/upgrade-center,非常方便
App.vue中的代码,负责检测
<script>
import { serverUrl } from '@/util/http'
export default {
globalData: {
title: '管理系统',
ver: 101,
},
onLaunch: function() {
console.log('App Launch')
this.checkVer()
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
methods: {
checkVer: function() {
uni.getSystemInfo({
success: (res) => {
console.log(res.platform);
//检测当前平台,如果是安卓则启动安卓更新
if (res.platform == "android") {
this.AndroidCheckUpdate();
}
}
})
},
AndroidCheckUpdate: function() {
var _this = this;
uni.request({
url: serverUrl + '/check-ver',
method: 'GET',
data: {},
success: res => {
console.log('res', res.data.data)
const data = res.data.data
const ver = data.ver
const downUrl = data.url
if (ver > this.globalData.ver) {
uni.showToast({
title: '有新的版本发布,程序已启动自动更新。新版本下载完成后将自动弹出安装程序。',
mask: true,
duration: 5000,
icon: "none"
});
var prg = 0;
var dtask = plus.downloader.createDownload(downUrl, {}, function(d, status) {
// 下载完成
if (status == 200) {
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(
error) {
uni.showToast({
title: '安装失败',
mask: false,
duration: 1500
});
})
} else {
uni.showToast({
title: '更新失败',
mask: false,
duration: 1500
});
}
});
dtask.start();
var showLoading = plus.nativeUI.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;
}
});
}
},
fail: () => {},
complete: () => {}
});
},
}
}
</script>
服务器响应的代码
返回内容
{code: 0, message: '', data: {ver: 102, url: 'http://...com/file_102.apk'}}
1 个评论
要回复文章请先登录或注册
1***@qq.com