App.vue这文件都有吧,当然,也可以写在其他页面,看项目需求了。
思路:第一个方法调接口返回来的是版本号和新的版本链接,将这个版本号与当前app的版本号进行比较,接口返回的版本号大于当前的版本号就弹窗提示用户有新版本了,要进行更新了,弹框有两个按钮,“立即更新”, “以后再说”],立即更新就跳转链接进行更新,链接的地址就是接口返回过来的地址,赋值就可以了,以后再说就代表用户不更新,不更新可以让他继续使用这个软件,我这里是强制更新,不更新就退出软件,
第二个方法就是下载新版本app了,等他下完就可以进行安装。
一遍看不懂就看两遍,两遍看不懂就看三遍,三遍看不懂就别看了,浪费时间。赶紧做下一个功能。
<script>
import {$POST} from "static/js/https.js"
export default {
data() {
return {
version:'',
sjAppUrl:''
}
},
methods: {
CheckUpdate(data) {
//获取当前app版本信息
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
this.version = wgtinfo.version;
$POST("selectSjAppVersion","",data).then(data=>{
this.sjAppUrl = data.result.appUrl;//新版本下载地址
if (data.result.appVersion > this.version) {
plus.nativeUI.confirm("检测到有新版本,是否更新", (e)=> {
if (e.index == 0) {
if (plus.networkinfo.getCurrentType() != 3) {
plus.nativeUI.confirm("检测到您目前非Wifi连接,是否继续更新", (e)=> {
if (e.index == 0) {
this.downWgt();//下载文件
}else{
plus.runtime.quit();//安卓控制不更新退出应用
}
}, "", ["确定", "取消"]);
}
this.downWgt(); //下载文件
} else {plus.runtime.quit()};//安卓控制不更新退出应用
}, "", ["立即更新", "以后再说"]);
}
}
})
})
},
downWgt() {
let dtask = plus.downloader.createDownload( this.sjAppUrl, {method:"GET"});
var prg = 0;
var showLoading = plus.nativeUI.showWaiting("正在下载");
dtask.addEventListener("statechanged", (task, status)=> {
if (!dtask) { return }
switch (task.state) {
case 1:
showLoading.setTitle("正在下载");
break;
case 2:
showLoading.setTitle("已连接到服务器");
break;
case 3:
var prg = parseInt((parseFloat(task.downloadedSize)/parseFloat(task.totalSize)) * 100);
showLoading.setTitle("正在下载" + prg + "%,请耐心等待...");
break;
case 4:
plus.nativeUI.closeWaiting();
plus.runtime.install(task.filename);
break;
}
},false);
dtask.start();
},
},
mounted() {
this.CheckUpdate(res.data.token);
}
}
</script>
没了,结束了,是不是很简单呐,如有问题,欢迎留言。
最后:如果此篇博文对您有帮助,还请动动小手点点关注点点赞呐~,谢谢 ~ ~