//在App.vue中应用级生命周期里面是否有版本更新 注意条件编译 只在app端
<script>
export default {
// #ifdef APP-PLUS
data() {
return {
version: 1.0.0,
}
},
// #endif
onLaunch: function() {
// #ifdef APP-PLUS
console.log('App Launch应用启动,版本号是', plus.runtime.version)
this.version = plus.runtime.version
uni.getSystemInfo({
success: (res) => {
console.log(res.platform);
//检测当前平台,如果是安卓则启动安卓更新
if (res.platform == "android") {
this.AndroidCheckUpdate();
}
}
})
// #endif
},
// #ifdef APP-PLUS
methods: {
AndroidCheckUpdate() {
uni.request({
url: 'http://xxxxxx.net/api/checkVersion?version=' + this.version, //后端判断的接口
method: 'GET',
data: {},
success: res => {
if (res.data.data.upgrade == 'yes') {
uni.showModal({
title: '提示',
content: '检测到应用更新了新版本,点击升级!',
success: (res) => {
if (res.confirm) {
console.log('用户点击确定');
uni.showLoading({
title: '下载中,请稍后...',
})
var dtask = plus.downloader.createDownload( //应用内下载apk
"http://xxxxxx.net/appokl/app.apk", { //apk下载地址
method: "GET"
},
function(d, status) {
// 下载完成
if (status == 200) {
uni.hideLoading()
console.log("下载成功开始安装: " + d.filename);
plus.runtime.install(d.filename) //安装下载的apk
} else {
plus.nativeUI.alert("安装失败,请稍候重试: " +
status)
}
});
dtask.start();
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
})
}
},
// #endif
}
</script>
前提是apk已上传到服务器。
进入app自动执行以上代码,调用接口得知是否有新版本,如有,会弹窗意识是否更新,点击确认会先在应用内下载apk,然后直接进入安装界面进行安装;如果没有新版本,则什么也没有,正常运行应用。
应用内下载的api,原生app的下载:
plus.downloader.createDownload(
"http://xxxxxx.net/appokl/app.apk", { //apk下载地址
method: "GET"
},function(d, status) {}
plus.runtime.install(d.filename) 安装api,d.filename是apk的临时文件
文章评论