关于uni-app的资源热更新!!!

该博客详细介绍了uni-app应用的资源热更新机制,包括整包升级和在线资源热更新。通过在`onLaunch`或`onLoad`中检测更新,并根据Android和iOS平台的差异处理更新提示及下载安装流程。利用后台接口获取更新信息,判断是否强制更新,实现客户端的智能更新管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看官方文档,对uni-app 的资源热更新有一个大致的了解:
整包升级
在线资源热更新
app方法

本文主要讲述,实现资源热更新时客户端需要进行的操作:

可以在***app.vue***的***onLaunch***函数(全局监测)中进行监测,也可以在***index.vue***的***onLoad***事件中监测

代码:

onLaunch(){
	// #ifdef APP-PLUS
	this.checkUpdateApp()
	// #endif
}
			//methods中定义的方法
			async checkUpdateApp() {
				let that = this
				let data = await that.updateInfoBack() || '' //后台接口返回的热更新资源的版本信息
				const platform = uni.getSystemInfoSync().platform
				let version = '',  
					appName = ""
				plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
					version = widgetInfo.version //当前版本信息
					appName = widgetInfo.name || ''
					if (data && data.apk_client_force_update == '0') {
						if (platform == 'android') {
							if (version != data.apk_client_version) {
								uni.showModal({
									title: appName + '更新',
									content: data.apk_client_intro ? data.apk_client_intro :
										'修复了一些已知问题以及产品优化',
									confirmText: '下载更新',
									success: (res) => {
										if (res.confirm) {
											uni.showLoading({
												title: '正在检查更新,请稍后',
												mask: true
											});
											uni.downloadFile({
												url: data.apk_client_download,
												success: (downres) => {
													if (downres.statusCode === 200) {
														plus.runtime.install(downres
															.tempFilePath, {
																force: false
															}, () => {
																uni.hideLoading()
																console.log(
																	'install success...'
																);
																plus.runtime
																	.restart();
															}, (e) => {
																uni.hideLoading()
																uni.showToast({
																	title: '更新失败',
																	icon: "none",
																	duration: 2200
																})
																console.error(e,
																	'install fail...'
																);
															});
													}
												}
											})
										} else if (res.cancel) {
											console.log('用户点击取消');
										}
									}
								});
							}else if(platform=='ios'){
								uni.showModal({
										title: appName + '更新',
										content: data.ios_client_intro ? data.ios_client_intro :
											'修复了一些已知问题以及产品优化',
										confirmText: '下载更新',
										success: (res) => {
											if (res.confirm) {
												plus.runtime.openURL(data.ios_client_download)
											} else if (res.cancel) {
												console.log('用户点击取消');
											}
										}
									});
								
							}
						}
					} else if (data && data.apk_client_force_update == '1') {
						let intro = '', appurl = '',appVersion = '', updata = ''
						switch (platform) {
							case 'android':
								intro = data.apk_client_intro
								appurl = data.apk_client_download
								appVersion = data.apk_client_version
								updata = data.apk_client_force_update
								break;
							case 'ios':
								intro = data.ios_client_intro
								appurl = data.ios_client_download
								appVersion = data.ios_client_version
								updata = data.ios_client_force_update
								break;
							default:
								console.log('运行在开发者工具上')
								break;
						}
						if (version/1 < appVersion/1) {
							uni.showModal({
								title: appName+'更新',
								confirmText: '立即升级',
								showCancel: updata == 1 ? false : true,
								content: intro,
								success: async function(res) {
									if (res.confirm) {
										plus.runtime.openURL(appurl)
									}
								}
							})
						}
					}
				});
			},
			
			//返回更新信息
			updateInfoBack() {
				return new Promise((resolve, reject) => {
					api.updateApp({}, res => {   //后台返回需热更新资源的接口
						if (res.error == '0') {
							let data = res.data || null;
							resolve(data)
						} else {
							reject(null)
						}
					})
				})
			},
			

图片说明:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值