uniapp版本升级

1.样式

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

有关代码:

html 复制代码
<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.操作代码

javascript 复制代码
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里使用

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

javascript 复制代码
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();
	}
};
相关推荐
十月ooOO3 分钟前
Express.js 在 ts 模式下运行 npm run dev 的时候无法找到引入项的原因
javascript·npm·express
成为大佬先秃头5 分钟前
解决Vue再浏览器的控制台中更新属性不生效
javascript·vue.js·ecmascript
袁煦丞7 分钟前
Moments你的专属无广告树洞:cpolar内网穿透实验室第521个成功挑战
前端·程序员·远程工作
独立开阀者_FwtCoder15 分钟前
Three.js 高效的射线投射和空间查询
前端·javascript·vue.js
bin915318 分钟前
DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_项目里程碑示例(CalendarView01_22)
前端·javascript·vue.js·ecmascript·deepseek
独立开阀者_FwtCoder26 分钟前
Three.js 虫洞特效
前端·vue.js·面试
Tipriest_30 分钟前
基于 Web 的 3D 设计工具Spline介绍
前端·3d·3d设计·spine·网页制作
可可格子衫33 分钟前
257. 二叉树的所有路径(js)
开发语言·javascript·ecmascript
伍哥的传说37 分钟前
前端适配方案之 flexible.js 到 postcss-px-to-viewport-8-plugin插件演进
开发语言·前端·javascript·小程序·ecmascript·postcss
江城开朗的豌豆1 小时前
Vue中的.sync修饰符:让父子组件'悄悄话'变得更简单!
前端·javascript·vue.js