uniapp版本升级

1.样式

登录进到首页,弹出更新提示框,且不可以关闭,侧边返回直接退出!

有关代码:

<uv-popup ref="popupUpdate" round="8" :close-on-click-overlay="false">
			<view style="width: 450rpx; display: flex; flex-direction: column; align-items: center; padding: 20rpx 0 50rpx 0">
				<text style="font-size: 23px">提示</text>
				<text style="font-size: 18px; margin-top: 20rpx">发现新版本,立即升级!</text>
				<view style="margin-top: 30rpx">
					<uv-button size="normal" type="primary" @click="sureUpdate" :customStyle="{ width: '300rpx' }">确认</uv-button>
				</view>
			</view>
		</uv-popup>

2.操作代码

const sureUpdate = () => {
	showFly(true, '');
};
const showFly = (isShowCancel, url) => {
	if (true) {
		// clearInterval(updateAction)
		uni.showLoading({
			title: '更新中……'
		});
		try {
			const appUrl = config.appDownloadUrl;
			const downloadTask = uni.downloadFile({
				url: appUrl, // 这个是最新版本apk包的地址
				success: (res) => {
					uni.hideLoading();
					if (res.statusCode === 200) {
						console.log('res.tempFilePath :>> ', res.tempFilePath);
						plus.runtime.install(
							res.tempFilePath,
							{
								force: true
							},
							(_res) => {
								uni.showToast({
									title: '更新成功,重启中',
									duration: 1600
								});
								popupUpdate.value.close();
								plus.runtime.restart();
								uni.hideToast();
							}
						);
					} else {
						uni.showToast({
							title: '下载失败!',
							icon: 'none',
							duration: 800
						});
					}
				}
			});
			// 下载进度
			downloadTask.onProgressUpdate((res) => {
				// _this.startDown = true;
				// _this.calcPro(res.progress);
				console.log('下载进度' + res.progress);
				// console.log('已经下载的数据长度' + res.totalBytesWritten);
				// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
				// // 测试条件,取消下载任务。
				// if (res.progress > 50) {
				//     downloadTask.abort();
				// }
			});
		} catch (error) {
			console.log('error :>> ', error);
			uni.hideLoading();
		} finally {
		}
	}
};

2.是否更新

在进到首页最重要的一环就是判断系统是否需要更新,在onShow里使用

如果接口返回的版本>系统现在本身的版本号,那么就弹出提示框!

nextTick(() => {
		// popupUpdate.value.open();
		isUpdate();
	});
const isUpdate = () => {
	const WXP_APP_VERSION = uni.getStorageSync('appVersion');
	const curVersion = uni.getStorageSync('version'); // 当前版本

	let str = WXP_APP_VERSION.split('.').join('');

	let str1 = curVersion.split('.').join('');
	console.log(Number(str));
	console.log(Number(str1));
	if (curVersion && WXP_APP_VERSION) {
		if (Number(str) > Number(str1)) {
			popupUpdate.value.open();
		} else {
			popupUpdate.value.close();
		}
	} else {
		popupUpdate.value.close();
	}
};

### 如何升级 UniApp 项目的版本 #### 升级 Vue 版本至 Vue 3 对于希望将基于 Vue 2 的 UniApp 项目迁移到 Vue 3 的开发者来说,迁移过程涉及多个方面。Vue 3 提供了更好的性能以及新的特性如组合式 API[^1]。 为了完成这一转换: - 修改 `manifest.json` 文件中的 `"main"` 字段指向入口文件,并确认其兼容 Vue 3。 - 更新 `package.json` 中的相关依赖项到支持 Vue 3 的版本,特别是 `@dcloudio/uni-app-plus`, `vue`, 和 `vuex` 等核心库。 ```json { "dependencies": { "@dcloudio/uni-app-plus": "^3.x", "vue": "^3.0.0" } } ``` - 替换旧版语法为新版语法;例如,移除 `.sync` 修饰符并采用 `$emit('update:modelValue')` 方式实现双向绑定。 #### 使用 NPM 升级工具链和其他依赖包 除了框架本身的升级外,还需要关注整个构建环境的同步更新。这可以通过命令行操作轻松达成: - 打开终端窗口进入到项目根目录位置; - 输入 `npm install -g npm` 完成全局范围内的 NPM 工具更新; - 接着通过 `npm update` 自动处理本地项目所需的各种软件包及其子依赖关系,使之尽可能贴近官方推荐的最佳实践配置[^2]。 需要注意的是,在执行上述指令之前最好先备份现有工作区以防万一出现问题可以迅速恢复原状。另外,某些情况下可能还会遇到权限不足的情况,则可考虑加上 `sudo` 前缀重新尝试一次(仅限 Linux/macOS 用户)。 #### 实现应用程序内部自动检查与更新机制 为了让用户体验更加流畅无缝隙,可以在 App 启动初期加入一段逻辑用于比较客户端已安装的应用程序版本号同服务器端所维护的目标版本之间的差异情况。一旦发现有可用的新版本存在即刻提示用户下载最新的 APK/IPA 文件并在后台静默完成部署流程而无需离开当前界面去往第三方平台寻找资源链接地址[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值