app热更新

		// #ifdef APP-PLUS
			plus.runtime.getProperty(plus.runtime.appid, (info) => {
				console.log('现在的版本为', info)
				const version = info.versionCode
				const _this = this
				uni.request({
					url: miao + 'version/pull',
					method: 'GET',
					success: res => {
						console.log('最新的版本为222', res.data)
						if (res.data.success) {
							const versionName = res.data.data.versionName
							console.log('现在的版本为', version, '最新的版本为', versionName)
							if (versionName > version && !!res.data.data.fileLink) {
								uni.showModal({
									title: '提示',
									content: '发现有新版本可以升级',		
									confirmText: '立即更新',
									showCancel:false,
									success: res1 => {
										if (res1.confirm) {
											
											let replacedUrl = res.data.data.fileLink;
											
											let updatedString = replacedUrl.replace("xxx.x.x.x");//本地id
											
											 let  versionDesc = parseFloat( res.data.data.versionDesc ) ;
											
											_this.show = true // show变量控制一个下载进度弹框(这个UI样式自己写即可)
										
											let dtask = plus.downloader.createDownload(updatedString, {},function(d, status) {
													// 下载完成  
													if (status == 200) {
														_this.show = false // 下载完成再把下载进度弹框关闭即可
																				uni.showModal({
																				  title: '提示',
																				  content: '更新成功',
																				  showCancel: true,
																				  // cancelText: '取消',
																				  confirmText: '重启',
																				  showCancel:false,
																				  success: function(res3) {
																				    if (res3.confirm) {
																				      // 用户点击了确定按钮
																				      console.log('用户点击了确定');
																					  plus.runtime.restart() 
																				    } else if (res3.cancel) {
																				      // 用户点击了取消按钮
																				      console.log('用户点击了取消');
																				    }
																				  }
																				});
														plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {},
															function(error) {
																uni.showToast({
																	title: '安装失败',
																	duration: 1500
																});
															})
													} else {
														uni.showToast({
															title: '更新失败',
															duration: 1500
														});
													}
												});
												
												console.log('用户点击确定.',replacedUrl, Math.floor(versionDesc * 1024),dtask);
											dtask.start(); // 下载任务开始下载
											// 关于进度的获取是使用定时器不断获取已经下载的文件的大小,再对比总大小即可
											let timer = setInterval(() => {
												let percent = (dtask.downloadedSize / Math.floor(versionDesc * 1024) ).toFixed(2) // fileSize文件总大小,后端返回的
												_this.percentVal = Math.floor(percent * 100) // 转成整数展示 
												if(_this.percentVal>=100){
													_this.percentVal = 100
												}
												 uni.showLoading({
												        title: '更新中...'+ _this.percentVal +'%',
												        mask: true,
												      });
												console.log('_this.percentVal',_this.percentVal,dtask.downloadedSize)
												if (percent >=1) { // 注意百分比,及时清除定时器即可
												uni.hideLoading();
													clearInterval(timer)
												}}, 18)
								
										} else if (res1.cancel) {
											console.log('用户点击取消');
										}
									},
									fail: (err) => {
										console.log('下载失败', err);
									}
								});

							}
						}
					}
				})
			})
			// #endif

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app热更新可以通过服务器存储最新版本号,前端进行查询并匹对版本号实现。具体实现步骤如下: 1.在服务器中存储最新版本号。 2.前端在应用首次进入时进行请求版本号,并与本地版本号进行匹对。 3.如果版本号一致,则不提示更新;如果版本号不一致,则提示进行更新操作。 4.执行更新操作,可以通过下载热更新包并进行安装实现。 5.在进行热更新之前,需要进行云打包并修改mainifest.json文件中的版本号,将其修改为低于热更新包的版本号。 以下是一个简单的uni-app热更新的示例代码: ```javascript // 获取服务器最新版本号 const latestVersion = await fetchLatestVersion(); // 获取本地版本号 const localVersion = getAppVersion(); // 版本号匹对 if (latestVersion !== localVersion) { // 提示更新操作 uni.showModal({ title: '发现新版本', content: '是否立即更新?', success: function (res) { if (res.confirm) { // 下载热更新包并进行安装 downloadAndUpdate(); } } }); } // 下载热更新包并进行安装 function downloadAndUpdate() { // 下载热更新包 const hotUpdate = uni.downloadFile({ url: 'https://www.example.com/hot-update.zip', success: function (res) { // 安装热更新包 uni.applyUpdate({ packagePath: res.tempFilePath, success: function () { // 热更新成功 }, fail: function () { // 热更新失败 } }); }, fail: function () { // 下载热更新包失败 } }); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值