一:先判断安卓还是IOS
mounted() {
let that = this;
uni.getSystemInfo({
success:(res) => {
console.log(res.platform);
//检测当前平台,如果是安卓则启动安卓更新
if(res.platform=="android"){
that.AndroidCheckUpdate();
}
}
})
}
二:调用连接获取下载路径查询版本信息
methods: {
AndroidCheckUpdate:function(){
var _this=this;
//获取当前app版本信息
var version = plus.runtime.version;
console.log(version);
uni.request({
//获取服务器的版本信息
url: 'http://***.***.***.***:8080/test/test.txt',
method: 'GET',
data: {},
success: res => {
console.log("现在的版本"+version+"数据库版本"+res.data+"进入查找app版本");
if(res.data>version){
plus.nativeUI.confirm("检测到有新版本,是否更新",function(e){
if(e.index==0){
if(plus.networkinfo.getCurrentType()!=3){
plus.nativeUI.confirm("检测到您目前非Wifi连接,是否继续更新",function(e){
if(e.index==0){
_this.downWgt();
}else{
}
},"",)["取消","确定"]
return;
}
_this.downWgt();//下载文件
}else{
//plus.runtime.quit();//安卓控制不更新退出应用
}
},"",["立即更新","以后再说"]);
//dtask.start();
}
},
fail: () => {
uni.showToast({
title: '调用请求失败',
mask: false,
duration: 5000,
icon:"none"
});
},
complete: () => {}
});
},
}
三:启动下载和下载监听
downWgt:function(){
var that=this;
var task = plus.downloader.createDownload( "http://***.***.***.***:8080/test/test.apk", {}, function ( d, status ) {
console.log("准备下载");
// 下载完成
if ( status == 200 ) {
plus.runtime.install(d.filename); // 安装下载的apk文件
} else {
mui.toast("下载更新失败!");
plus.nativeUI.closeWaiting();
}
//监听下载
task.addEventListener("statechanged", function (download, status) {
switch (download.state) {
case 2:
console.log("正在下载");
plus.nativeUI.showWaiting("正在下载...");
break;
case 3:
//console.log("进度进度读取"+download.downloadedSize/that.totalSize*100);
//进度条百分比 totalSize为总量,baifen为当前下载的百分比
if(that.totalSize==0){
that.totalSize=parseInt(download.totalSize);
}
if(parseInt(download.downloadedSize/that.totalSize*100)!=that.baifen){
that.baifen=parseInt(download.downloadedSize/that.totalSize*100);
plus.nativeUI.showWaiting("正在下载:"+that.baifen+"%");
}
break;
case 4:
console.log("下载完成");
mui.toast("下载完成");
plus.nativeUI.closeWaiting();
break;
}
});
task.start();
},