uniapp 自动升级-uni-upgrade-center

一、 用户端

1、 引入升级中心插件

ni-upgrade-center - App 下载地址

在这里插入图片描述

2、page.json引入

不要设置pages.json第一项

"pages": [

		{
   
   
			"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
			"style": {
   
   
				"disableScroll": true,
				"app-plus": {
   
   
					"backgroundColorTop": "transparent",
					"background": "transparent",
					"titleNView": false,
					"scrollIn
`uni-upgrade-center` 是 DCloud 提供的一个用于 **uni-app 应用升级管理** 的插件,主要用于在 App(尤其是使用 uni-app 开发的混合应用)中实现版本检测、热更新(资源包更新)、整包升级提示等功能。 其中 `min_uni_version` 是该升级中心配置中的一个关键字段,用于指定当前发布的资源包所依赖的 **最低 uni-app 引擎版本**。 --- ### ✅ 什么是 `min_uni_version`? `min_uni_version` 表示:**此更新包(如 wgt 热更新包)运行所需的最低 uni-app 原生引擎版本号**。如果用户的客户端内置的引擎版本低于这个值,则不能应用此次更新,必须强制整包升级(下载新的 APK/IPA)。 > 它的作用是确保新发布的代码(比如使用了新的 API 或框架特性)不会在旧版运行环境中崩溃。 --- ### 📁 配置位置 通常在 `manifest.json` 或升级服务器返回的升级信息 JSON 中出现: ```json { "version": "1.0.1", "name": "主功能优化", "min_uni_version": "3.0.0", "upgrade_url": "https://example.com/app-update.wgt" } ``` 或者在 `uni-upgrade-center` 插件的服务端配置中: ```json { "android": { "url": "https://yourdomain.com/update/android.wgt", "version": "1.0.1", "min_uni_version": "3.0.0", "description": "修复若干问题" } } ``` --- ### 🔧 工作机制说明 当客户端请求检查更新时: 1. 客户端上报当前设备信息,包括: - 当前 App 版本 - 当前 `uni-app` 引擎版本(可通过 `uni.getSystemInfoSync().appVersion` 或内部变量获取) 2. 升级服务器返回更新信息,包含 `min_uni_version` 3. 客户端对比本地引擎版本 与 `min_uni_version`: - 如果 `本地版本 < min_uni_version` → 必须整包升级(无法热更新) - 否则 → 可以安全地进行热更新(wgt 更新) --- ### 💡 示例代码:如何在 uni-app 中处理升级逻辑(配合 uni-upgrade-center) #### 1. 安装插件(HBuilderX 中) 通过 HBuilderX 的插件市场安装 [`uni-upgrade-center`](https://ext.dcloud.net.cn/plugin?id=1857) #### 2. 调用检查更新 ```javascript // 使用 uni-upgrade-center 检查更新 const upgradeCenter = uni.requireNativePlugin('UniUpgradeCenter'); uni.checkUpdate({ success: (res) => { if (res.update && res.version) { // 获取服务器返回的信息 const serverMinUniVersion = res.min_uni_version; // 如 "3.0.0" const currentEngineVersion = getApp().$scope.__uniConfig?.uniVersion || '2.9.9'; console.log('当前引擎版本:', currentEngineVersion); console.log('所需最低引擎版本:', serverMinUniVersion); if (this.compareVersion(currentEngineVersion, serverMinUniVersion) < 0) { // 当前客户端太老,必须去应用市场升级 uni.showModal({ title: '需要更新', content: '您的应用版本过旧,请下载最新版本。', showCancel: false, success: () => { // 跳转到应用市场或下载页面 plus.runtime.openURL('https://yourdomain.com/download'); } }); } else { // 可以热更新 uni.downloadFile({ url: res.updateUrl, success: (downloadRes) => { if (downloadRes.statusCode === 200) { upgradeCenter.installUpdate(downloadRes.tempFilePath); } } }); } } else { uni.showToast({ title: '已是最新版本', icon: 'none' }); } }, fail: (err) => { console.error('检查更新失败', err); } }); ``` #### 3. 版本比较工具函数 ```javascript compareVersion(v1, v2) { const a = v1.split('.').map(Number); const b = v2.split('.').map(Number); for (let i = 0; i < Math.max(a.length, b.length); i++) { const num1 = i < a.length ? a[i] : 0; const num2 = i < b.length ? b[i] : 0; if (num1 > num2) return 1; if (num1 < num2) return -1; } return 0; } ``` --- ### ⚠️ 注意事项 | 项目 | 说明 | |------|------| | `min_uni_version` 来源 | HBuilderX 构建时根据底层 SDK 自动生成,可在离线打包或云打包日志中查看 | | 修改时机 | 每次你使用了新版本才支持的功能(如新增 JSAPI、组件等),应提高此值 | | 用户影响 | 若设置过高,老用户无法热更新,只能重装 App | --- ### ❓ 如何查看当前 Appuni-app 引擎版本? ```javascript const info = uni.getSystemInfoSync(); console.log(info.appVersion); // 输出类似 "3.0.0" 或 "HBuilder X 3.0.0" ``` 或者在原生插件中调用: ```js const version = plus.runtime.version; console.log(version); // H5+ 运行环境版本 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值