uniapp实现app版本发现新版本后,自动更新

最近开发app项目,为了实现版本的自动更新,简单进行一下记录

首先,版本更新,肯定需要有个版本比对的文件,因此远程上要先有最新版本的信息记录,包含版本号和下载地址(看需求进行添加其他信息)

这个更新仅限制于安卓端, IOS是禁止自动更新的, 因此在触发getVersion()版本号时,记得使用uni.getSystemInfoSync().platform 区分一下,在安卓系统下再执行判断版本。

			getVersion() {
				//#ifdef APP-PLUS
				// 获取本地应用资源版本号
				plus.runtime.getProperty(plus.runtime.appid, (info) => {
					uni.request({
						// 环境更新信息
						url:'***********', // 自身记录版本信息的地址
						success: (res) => {
							if (res.statusCode == 200) {
								if (res.data.isForceVersion) {
									// 当发现版本信息不一致时,需要弹出下载弹窗、和新版本信息
									if (Number(res.data.versionCode) != info.versionCode) {
										// 这个是判断是否弹出下载弹窗
										this.downloadShow = true
										this.downloadData = res.data
									}
								}
							}
						}
					})
				})
				//#endif 
			},
			// 弹窗下载按钮事件
			renew() {
				// 进度条
				this.hasProgress = true
				uni.showLoading({
					title: "更新中"
				})
				uni.downloadFile({
					url: this.downloadData.url, // 这个是最新版本apk包的地址(在上面获取的新版本信息中apk的地址)
					success: (res) => {
						uni.hideLoading();
						if (res.statusCode === 200) {
							plus.runtime.install(res.tempFilePath, {
								force: true
							}, _res => {
								plus.runtime.restart();
								uni.hideToast();
								uni.hideLoading()
								this.hasProgress = false
							});
						} else {
							this.hasProgress = false
							uni.hideLoading()
							uni.showToast({
								title: "下载失败!",
								icon: "none",
								duration: 800,
							});
						}
					},
					fail: (err) => {
						uni.showToast({
							title: "下载失败!",
							icon: "none",
							duration: 800,
						});
						uni.hideLoading()
					}
				});
			},
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值