uni-app版本更新 整包更新

本文介绍了一个App启动时如何检查版本更新并引导用户下载新版本的实现细节。包括使用uni-app框架进行版本检查请求、展示更新提示对话框、下载新版本文件及状态更新等关键步骤。

onLaunch

<script>
	export default {
		globalData: {
			userCode: uni.getStorageSync('user').code
		},
		onLaunch: function() {
			// #ifdef APP-PLUS
			uni.request({
				url: 'http://192.168.3.139:9301/' + 'version/check',
				data: {},
				method: 'GET',
				header: {
					'appVersion': plus.runtime.version,
					'platform': '1',
					'Content-type': 'application/json'
				},

				success: res => {
					console.log(res)
					if (res.data.code == 200 && res.data.data.fileUrl) {
						uni.showModal({
							title: '检测到新版本!',
							content: res.data.data.versiondesc,
							success: res1 => {
								if (res1.confirm) {
									// uni.showLoading({
									// 	title: '正在下载...',
									// 	mask: true
									// })
									var dtask = plus.downloader.createDownload(
										res.data.data.fileUrl, {},
										function(d, status) {
											// 下载完成
											if (status == 200) {
												//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
												var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
												plus.runtime.openFile(d.filename); //选择软件打开文件
												// uni.hideLoading()
											} else {
												//下载失败
												plus.downloader.clear(); //清除下载任务
												// uni.hideLoading()
											}
										});
									dtask.start();

									var prg = 0;
									var showLoading = plus.nativeUI.showWaiting('正在下载');
									dtask.addEventListener('statechanged', (task, status) => {
										{
											switch (task.state) {
												case 1:
													showLoading.setTitle("正在下载");
													break;
												case 2:
													showLoading.setTitle("已连接到服务器");
													break;
												case 3:
													prg = parseInt(
														(parseFloat(task.downloadedSize) /
															parseFloat(task.totalSize)) *
														100
													);
													showLoading.setTitle('正在下载' + prg + '%');
													break;
												case 4:
													plus.nativeUI.closeWaiting();
													break;
											}
										}
									})
								} else if (res1.cancel) {
									if (res.data.data.coerce == 1) {
										plus.runtime.quit();
									} else {
										uni.showToast({
											title: '取消更新',
											mask: true,
											icon: 'none'
										})
									}
								}
							}
						})
					}
				}

			})
			// #endif
		},
		onShow: function() {},
		onHide: function() {
			console.log('App Hide');
		}
	}
</script>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值