uniapp app更新

uniapp app更新
这个版本要随之增加,不然刚更新时直接用app, 新包增加的那些页面跳转会有问题,不能跳新的页面

javascript 复制代码
//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('清理文件数据失败')
		});
	};
},
相关推荐
homelook12 小时前
uniapp蓝牙demo
uni-app
2501_915909061 天前
手机崩溃日志导出的工程化体系,从系统级诊断到应用行为分析的多工具协同方法
android·ios·智能手机·小程序·uni-app·iphone·webview
郑州光合科技余经理1 天前
技术视角:海外版一站式同城生活服务平台源码解析
java·开发语言·uni-app·php·排序算法·objective-c·生活
wangdaoyin20101 天前
UniApp中使用LivePlayer进行视频或在流媒体播放
uni-app·liveplayer·h5播放视频
2501_915106321 天前
App HTTPS 抓包实战解析,从代理调试到真实网络流量观察的完整抓包思路
网络协议·http·ios·小程序·https·uni-app·iphone
游戏开发爱好者82 天前
苹果App Store应用程序上架方式全面指南
android·小程序·https·uni-app·iphone·webview
2501_916008892 天前
深入理解 iPhone 文件管理,从沙盒结构到开发调试的多工具协同实践
android·ios·小程序·https·uni-app·iphone·webview
一室易安2 天前
解决使用 UniApp 搭配 Vue3 小程序开始 使用uview-plus 的返回顶部up-back-top中onPageScroll 不触发的问题
小程序·uni-app
yilan_n2 天前
鸿蒙应用上传
vue.js·华为·uni-app
yilan_n2 天前
【UniApp实战】手撸面包屑导航与路由管理 (拒绝页面闪烁)
前端·javascript·vue.js·uni-app·gitcode