uniapp检测更新功能开发记录 安卓版本
实现思路
1、在登录页面(首次加载页面)onReady(根据项目配置的首次触发的生命周期中)进行版本校验
如果检测到版本不一致 则调用 updateApp 方法进行更新提示
plus.io.resolveLocalFileSystemURL 方法可以根据相对路径获取下载文件夹。
entry.removeRecursively 递归进行文件夹删除
plus.downloader.createDownload 下载最新的安装包
plus.runtime.openFile 安装包安装
下面时实现代码
updateApp() {
let self = this
uni.showModal({
title: '更新',
showCancel: true,
content: '检测到更新的版本,是否进行更新',
confirmText: '更新',
success: function(result) {
if (!result.confirm) {
self.goNextPage()
return
}
try {
// 先清除已经下载的所有的安装包
plus.io.resolveLocalFileSystemURL('_downloads/', function(entry) {
//
entry.removeRecursively(function(entry) {
var downTask = plus.downloader.createDownload(
config.VUE_APP_BASE_API_HPJY +
'/appVersion/app/download',
{},
function(d, status) {
console.log(status);
//d为下载的文件对象
if (status == 200) {
console.log(1);
// 下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
// var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
plus.runtime.openFile(d.filename); //选择软件打开文件
} else {
//下载失败
plus.downloader.clear(); //清除下载任务
uni.showToast({
icon: 'none',
title: '更新失败'
})
}
})
//开始下载
downTask.start();
//监听下载进度
self.showpercentage = true
downTask.addEventListener('statechanged', (task) => {
let percentage = parseInt(
(parseFloat(task.downloadedSize) /
parseFloat(task.totalSize)) *
100
);
self.percentage = percentage
if (percentage == 100) {
self.showpercentage = false
}
})
}, function(e) {
console.log(e,'---------');
});
}, function(e) {
});
} catch (e) {
//TODO handle the exception
}
}
})
},
参考文档地址
1、https://www.html5plus.org/doc/zh_cn/io.html#plus.io.getFileInfo