在 UniApp 中,热更新(也称为动态更新)允许你在不重新安装应用的情况下更新应用的部分内容。这通常用于修复紧急问题或添加新功能,而无需用户通过应用商店下载新的完整版本。

 

一、版本配置

项目版本号在manifest.json文件中配置

注意事项

  1. 版本号的唯一性:

    • 版本号必须是唯一的,并且每次发布的新版本其 应用版本号(versionCode )必须大于之前的版本。
    • 例如,如果当前版本的 versionCode 是 100,下一个版本的 versionCode 应该是 101 或更高。
  2. 版本名称的语义化:

    • 使用语义化版本控制可以帮助用户更好地理解应用的更新内容。
    • 例如,1.0.0 表示第一个主要版本,1.1.0 表示第一个主要版本的第一个次要更新,1.1.1 表示第一个主要版本的第一个次要更新的第一个补丁

二、版本比较

1.在App.vue中判断当前版本和接口返回的版本号是否一致

//App.vue 
onShow: function() {
      // #ifdef APP-PLUS
      // 获取当前版本
      plus.runtime.getProperty(plus.runtime.appid, function(e) {
        console.log(e, '获取当前wgt版本')
        // 接口获取最新版本
        uni.request({
          url: '换成接口地址',
          method: 'GET',
          header: {
            'content-type': 'application/json'
          },
          data,
          success: res => {
            let nowVersion = e.versionCode //当前版本
            let newVersion = res.data //最新版本
            //版本不相同跳转更新页面,或弹出更新弹窗
            if (nowVersion != newVersion) {
              uni.navigateTo({
                url: "/subPack/pages/setting/versionUpdate"
              })
            }
          }
        })
      });
      // #endif
    },

三、更新 

 1."更新"页面代码 ,下载链接可放宝塔,内容是一个.wgt包

<template>
	<div></div>
</template>

<script>
	export default {
		onShow() {
			let that = this
			uni.showModal({
				title: '提示',
				content: "检测到新版本,是否更新",
				cancelText: '取消',
				confirmText: '确定',
				success: function(res) {
					// 更新
					that.upgradation()
				}
			})
		},
		methods: {
			// 更新
			upgradation() {
				let downloadProgress = uni.downloadFile({
					url: "下载链接", //内容是一个.wgt包
					success: (downloadResult) => {
						if (downloadResult.statusCode === 200) {
							// 下载更新文件成功后进行安装
							plus.runtime.install(downloadResult.tempFilePath, {
									force: true // 是否强制安装, 如果将要安装应用的版本号不高于现有应用的版本号则终止安装,并返回安装失败。
								},
								function() {
									uni.showToast({
										title: '更新完毕,即将重启',
										icon: 'none',
										position: 'bottom'
									})
									plus.runtime.restart(); // 安装完成后重启应用
								},
								function() {
									uni.showToast({
										title: '更新失败',
										icon: 'none',
										position: 'bottom'
									})
									setTimeout(() => {
										plus.runtime.restart(); // 重启应用
									}, 1000)
								})
						}
					}
				});
				// 获取下载进度
				downloadProgress.onProgressUpdate((res) => {
					// 下载进度百分比res.progress + "%"
					console.log(res.progress)
				})
			}
		},
	};
</script>

四、生成.wgt包

uniapp 打包后找到存放文件地址--可修改文件名--将文件上传到宝塔--修改管理端的版本号即可

 

 测试热更新:在应用启动时触发热更新检查,确保热更新功能正常工作。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐