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('清理文件数据失败')});};
},