uniapp 更新

<!-- #ifdef APP-PLUS -->
			<view v-show="isupAppStatu" class="upAppBg">
				<view class="upAppBox">
					<view class="upAppBox_title">
						发现新版本
						<text >{{isupAppList.version}}</text>
					</view>
					<view v-show="updateprogress" style="width: 80%;margin-bottom: 30rpx;">
							<progress :percent="updatesum" activeColor="red" stroke-width="8" />
					</view>
					<view @click="upApp" class="upAppBox_btn">
						{{updateprogresstxt}}
					</view>
				</view>
			</view>
		<!-- #endif -->
onShow() {
			let this_ = this
			//#ifdef APP-PLUS
			//发起http请求,res中包含安卓和ios最新版本号,更新描述等数据
			getVersion().then(res => {
				this.iosUrl = res.data.iosUrl   //ios更新地址
				this.AndroidUrl = res.data.aUrl //安卓更新包
				// // 需要区分ios和安卓(两者更新APP方式不一致)
				if (/android/.test(uni.getSystemInfoSync().platform)) {
					plus.runtime.getProperty(plus.runtime.appid, function(inf) {
                                                //获取当前版本的版本号跟接口返回的做对比
                                                 //strNumber()  这个方法只是吧 1.1.1 切换成111  用数字来进行对比  可以不用
						const ver =  this_.strNumber(inf.version); //测试
						let androidV = this_.strNumber(res.data.androidV)
						if (androidV > ver) {
							uni.hideTabBar()//隐藏底部导航栏
							// _this.isupAppList = res.data.android // 更新描述
							this_.isupAppStatu = true // 显示更新提示框
						}
					})
				}else if (/ios/.test(uni.getSystemInfoSync().platform)){
					
					plus.runtime.getProperty(plus.runtime.appid, function(inf) {
						const ver =  this_.strNumber(inf.version); //测试
						let androidV = this_.strNumber(res.data.v)
						if (androidV > ver) {
							uni.hideTabBar()//隐藏底部导航栏
							// _this.isupAppList = res.data.ios // 更新描述
							this_.isupAppStatu = true // 显示更新提示框
						}
					})
				}
			})
			
			//#endif
			
		},
methods:{
      // 更新APP
			upApp(){
			// 防止用户多次点击
			let this_ = this
				if (this.updateprogress) {
					return
				} else {
					if (/android/.test(uni.getSystemInfoSync().platform)) {
						this_.updateprogress = true //显示进度条
						this_.updateprogresstxt = '正在更新...' //更改按钮文字 
						// console.log(this.isupAppList)
						const downloadTask = uni.downloadFile({
						 url: this_.AndroidUrl,
						 success: (res) => {
							if (res.statusCode === 200) {
								 this_.updateprogress = false
								 plus.runtime.install(res.tempFilePath); // 自动安装apk文件
								 plus.runtime.quit();
							} else {
								this_.updateprogress = false
							}
						 }
						})
						// 监控下载apk的进度
						downloadTask.onProgressUpdate((res) => {
						 this_.updatesum = res.progress
						});
					}else {
						// 苹果更新需要携带参数打开APPStore跳转到上架的应用上
						var urlStr = encodeURI(this_.iosUrl)
						plus.runtime.openURL(urlStr, function(res) {})
					 }
				}
			},
}

原文 : https://blog.csdn.net/long19981231/article/details/120449805

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值