app接近尾声了,提出了几点建议,五一前就已经处理了大部分了,昨天下午写的app更新,今天来展示一下。
首先app更新是需要后端接口的,我这边需要的参数一个下载地址,一个版本号,还有一个软件名称,因为软件是需要强制更新的,所以就不做强制更新之类的了。
首先是用plus.runtime.version获取当前apk对应版本号,我用的是云打包,从manifest.json修改版本号
created() {
this.androidVersion = plus.runtime.version//获取版本,并且记录
uni.getSystemInfo({//uniapp检测使用设备
success: (res) => {
if(res.platform == 'android'){//如果是安卓设备执行
this.AndroidCheckUpdate();
}
}
})
},
其次是获取接口
AndroidCheckUpdate() {
this.$get(api.GETVERSION).then(res => {
//后端传入数据进行处理
this.newappUrl = this.imageUrl + res.data.data.fileUrl;//apk下载链接
//后端传入最新版本的版本号,每次发布新版都要修改
this.getVersion = res.data.data.version
//对版本号进行对比
if(res.data.data.version != this.androidVersion){
uni.showModal({
content:"现版本已落后,请检查更新。",
success: () => {
uni.showLoading()
this.upload()
}
})
}
})
},
然后是接下来是进行下载并且自动打开
upload(){
var name = '*****.apk';//安装包名称
//用HTML5语言进行下载传的参数分别为,url,option
//option是对下载文件的操作,修改名称,设置下载地址。
var appdownload = plus.downloader.createDownload(
this.newappUrl, {filename: "_downloads/"+name},function(apk,status){
uni.hideLoading()
//下载成功后
if(status == 200){
//获取apk下载位置的有效路径
var fileSaveUrl = plus.io.convertLocalFileSystemURL(apk.filename);
//下载
plus.runtime.install(fileSaveUrl),{},{},function(res){
console.log(res)
}
}
}
)
//执行下载
appdownload.start()
},
这是暂时的全部过程,优化是打算做进度条,然后提示升级,后续的强制升级,对提示做一下修补和判断