uniapp app更新
这个版本要随之增加,不然刚更新时直接用app, 新包增加的那些页面跳转会有问题,不能跳新的页面
//app更新检测
updataApp(){
const that = this;
uni.showLoading({title:'加载中...'})
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
let currentVersion = widgetInfo.versionCode; //获取当前版本号
console.log('当前版本',currentVersion)
that.$api.getLatestVersion()
.then(res =>{
console.log('版本',res)
if(res.code == 200){
let newVersion = res.data.version;
if (currentVersion < newVersion) {
that.downloadUrl = that.baseUrl + res.data.path;
console.log('下载路径',that.downloadUrl)
that.openPop(666)
}
}
})
})
},
//APP更新
actionApp(){
const that = this;
const downloadTask = uni.downloadFile({
url: that.downloadUrl,
success: (downloadResult) => {
console.log('?????',downloadResult)
plus.runtime.install(
downloadResult.tempFilePath, {
force: true
},
function() {
that.closePop()
uni.showToast({
title: '安装成功,请重新启动',
icon: 'none',
mask:true
})
// that.clearCache()
plus.runtime.restart();
},
function(e) {
console.log(e)
that.closePop()
uni.showToast({
title: '安装失败',
icon: 'none',
mask:true
})
//关闭应用
setTimeout(() =>{
plus.runtime.quit();
},1000)
})
},
fail: (err) => {
that.closePop()
console.log(err);
uni.showToast({
title: '下载失败',
icon: 'none',
mask:true
})
//关闭应用
setTimeout(() =>{
plus.runtime.quit();
},1000)
}
})
//下载进度监听
downloadTask.onProgressUpdate((res) => {
if (res.progress <= 99) {
console.log('下载进度'+res.progress+'%');
that.schedule = res.progress;
}
});
},
//清除app更新后的文件缓存
clearCache(type = 2) {
// 第一种方式:彻底清理存储数据(用户数据),包括用户权限和缓存,但是这种方式清理之后当前的app会闪退出去,只有等待用户重新拉起。
if (type == 1) {
plus.android.importClass("android.app.ActivityManager");
var Context = plus.android.importClass("android.content.Context");
var am = plus.android.runtimeMainActivity().getSystemService(Context.ACTIVITY_SERVICE);
am.clearApplicationUserData();
return
}
// 第二种方式:清理内存存储文件(部分用户数据),不会清理用户权限,也不会闪退,一些静态的图片会被清理掉。
let main = plus.android.runtimeMainActivity();
let sdRoot1 = main.getFilesDir();
let filesOne = plus.android.invoke(sdRoot1, "listFiles");
let lenOne = filesOne.length;
for (let i = 0; i < lenOne; i++) {
let filePath = '' + filesOne[i]; // 没有找到合适的方法获取路径,这样写可以转成文件路径
plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
if (entry.isDirectory) {
entry.removeRecursively(function(entry) { //递归删除其下的所有文件及子目录
console.log('清理文件数据完成')
}, function(e) {
console.log(e.message)
});
} else {
entry.remove(function(entry) { //递归删除其下的所有文件及子目录
console.log('清理文件数据完成')
}, function(e) {
console.log(e.message)
});
}
}, function(e) {
console.log('清理文件数据失败')
});
};
},