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()
					}
				});
			},

猜你喜欢

转载自blog.csdn.net/oldolder/article/details/133613627