//在App.vue中应用级生命周期里面是否有版本更新 注意条件编译 只在app端<script>export default {// #ifdef APP-PLUSdata() {return {version: 1.0.0,}},// #endifonLaunch: function() {// #ifdef APP-PLUSconsole.log('App Launch应用启动,版本号是', plus.runtime.version)this.version = plus.runtime.versionuni.getSystemInfo({success: (res) => {console.log(res.platform);//检测当前平台,如果是安卓则启动安卓更新if (res.platform == "android") {this.AndroidCheckUpdate();}}})// #endif},// #ifdef APP-PLUSmethods: {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的临时文件
文章评论