uniapp 在线更新应用

在线更新应用及进度条显示

1.比较现安装手机中的apk 与线上apk的版本

javascript 复制代码
getVersion(){
				var newVersion=uni.getStorageSync("newVersion").split(".")
				var version=plus.runtime.version.split(".") // 获取手机安装的版本
				var versionNum="",newVersionNum=""
				for(var i=0;i<version.length;i++){
					versionNum+=version[i]
				}
				for(var i=0;i<newVersion.length;i++){
					newVersionNum+=newVersion[i]
				}
				if(versionNum<newVersionNum){
					this.chooseUpApp()
				}
			},

2.选择android的方式安装还是apple的testFligt方式安装

javascript 复制代码
chooseUpApp(){
				uni.showModal({
				    title: '提示',
				    content: plus.os.name == 'Android'?'检测到有最新版本,是否下载!':'检测到有最新版本,是否去TestFlight下载!',
				    success:(res)=> {
				        if (res.confirm) {
							if(plus.os.name == 'Android'){
								this.isUpApp=true
								this.upApp()
							}else{
								plus.runtime.launchApplication({ action:this.upUrl}, function(e) {
									uni.showToast({
										icon:"none",
										title:"请确认手机安装了TestFlight"
									})
									console.log('Open system default browser failed: ' + e.message);  
								});  
							}
				        } else if (res.cancel) {
				            console.log('用户点击取消');
				        }
				    }
				});
			},

3.安装apk,并显示进度条

javascript 复制代码
upApp(){//下载APP
				var downloadTask=uni.downloadFile({
					url:this.upUrl,
					complete(res){
						console.log(res)
						if(res.statusCode==200){
							plus.runtime.install(res.tempFilePath, {
								force: false
							}, (e) => {
								this.isUpApp=false
								plus.runtime.restart();
							}, (e) => {
								console.log(e);
								this.isUpApp=false
								uni.showToast({
									title: '安装升级包失败',
									icon: 'none'
								})
							});
						}
					}
				})
				this.progress=0
				// console.log(downloadTask)
				downloadTask.onProgressUpdate((res) => { //监听下载进度变化
					console.log(res)
					if(this.progress!=res.progress){
						this.progress=res.progress
						// console.log('下载进度' + res.progress);
						// console.log('已经下载的数据长度' + res.totalBytesWritten);
						// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
					}
				    // 测试条件,取消下载任务。
				});
			},
相关推荐
麻瓜生活睁不开眼3 小时前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
AFinalStone6 小时前
Android 7系统休眠唤醒(六)唤醒全链路
android·电源管理·休眠唤醒
雨白7 小时前
深入理解 Kotlin 协程 (九):互通有无,解构 Channel 缓冲策略与底层无锁机制
android·kotlin
灯塔@kuaidao8 小时前
平台交叉编译名词解释与基础流程
android
__Witheart__9 小时前
3568 Android otg模式下adb热拔插不识别
android·adb·rockchip
明天…ling11 小时前
Upload-Labs (Pass1-Pass21) 完整通关思路与源码分析
android·网络安全·渗透测试·burpsuite·upload-labs·文件上传绕过·靶场复现
__Witheart__11 小时前
3568 Android ntp校时使用
android·rockchip
wddptwd2812 小时前
android studio 报错怎么处理 java.lang.NullPointerException
android·java·android studio
美狐美颜SDK开放平台12 小时前
直播APP开发,美颜SDK和相机SDK有什么区别?
android·深度学习·数码相机·ios·直播美颜sdk·视频美颜sdk
唐诺14 小时前
Android Open Accessory (AOA) 协议完全解析
android·usb·aoa