首页 > 其他分享 >uniapp检查更新并显示下载进度(2)

uniapp检查更新并显示下载进度(2)

时间:2023-09-04 17:13:12浏览次数:43  
标签:function uniapp res version plus 进度 nativeUI data 下载

1、App.vue文件

<script>
import appUpdate from '@/util/appUpdate.js'


onLaunch: function() {
			uni.getSystemInfo({
				success: function(e) {
					// #ifdef APP-PLUS
					// 检测升级
					appUpdate()
					// #endif
                }
            }
}
</script>

2、appUpdate.js文件

//APP更新
import { http } from '@/common/service/service.js' 
export default function appUpdate() {
	uni.request({
		url: 'http://2.34.4.2/update/update.json', //检查更新的服务器地址
		data: {
			appid: plus.runtime.appid,
			version: plus.runtime.version,
			imei: plus.device.imei
		},
		success: (res) => {
			plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
				
				let client_version = wgtinfo.version
				
				// var flag_update = client_version.split(".").splice(0, 2).join(".") != JSON.parse(res.data.version).split(".").splice(0, 2)
				// 	.join(".")
				var flag_update = client_version.split(".").splice(0, 2).join(".") != res.data.version.split(".").splice(0, 2)
					.join(".")
				var flag_hot = (Number(client_version.split(".")[2]) < Number(res.data.version.split(".")[2])) & !flag_update
				console.log(res.data.version)
				console.log(client_version)
				console.log(flag_update)
				console.log(flag_hot)

				if (flag_update) {
					// 提醒用户更新
					uni.showModal({
						title: '更新提示',
						content: res.data.note,
						success: (showResult) => {
							if (showResult.confirm) {
								plus.nativeUI.toast("正在准备环境,请稍后!");
								var dtask = plus.downloader.createDownload(res.data.url, {
									method: 'GET',
									filename: '_doc/update/'
								}, function(d, status) {
									if (status == 200) {
										var path = d.filename; //下载apk
										plus.runtime.install(path); // 自动安装apk文件
									} else {
										plus.nativeUI.alert('版本更新失败:' + status);
									}
								});
								try {  //加载进度显示
									dtask.start(); // 开启下载的任务
									var prg = 0;
									var showLoading = plus.nativeUI.showWaiting("正在下载");  //创建一个showWaiting对象 
									dtask.addEventListener('statechanged', function(
									  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;
									  }
									});
								  } catch (err) {
									  plus.nativeUI.closeWaiting();
									  uni.showToast({
										title: '更新失败-03',
										mask: false,
										duration: 1500
									  });
								  }
								// dtask.start();
							}
						}
					})
				} else if (flag_hot) {
					uni.downloadFile({
						url: res.data.wgtUrl,
						success: (downloadResult) => {
							if (downloadResult.statusCode === 200) {
								// plus.nativeUI.toast(`正在热更新!${res.data.versionCode}`);
								plus.nativeUI.toast(`正在热更新!${res.data.version}`);
								plus.runtime.install(downloadResult.tempFilePath, {
									force: true
								}, function() {
									plus.nativeUI.toast("热更新成功");
									plus.runtime.restart();// 安装成功后重启 
								}, function(e) {
									console.log(e)
									plus.nativeUI.toast(`热更新失败:${e.message}`);
								});
							}
						},
						fail: (err) => {
							console.log('下载失败', err)
						}
					});
				}

			});
		}
	})
}

标签:function,uniapp,res,version,plus,进度,nativeUI,data,下载
From: https://www.cnblogs.com/axingya/p/17677574.html

相关文章

  • 百度上传下载组件源码
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • 我们把“高血压”小游戏真正做到了不用下载,点击即玩!!!
    作者:邵丹相信大家经常在短视频网站上刷到各种“高血压“小游戏吧。当你按捺不住点击,却发现手机上多了一大堆“流氓软件”的时候,血压就更高了。但是!今天!我们把“虚假广告”做成了真实的游戏,并且可以轻松部署到阿里云Serverless应用引擎(简称:SAE)上,实现点击即玩!(SAE是一款极简易用......
  • 致远OA webmail.do 任意文件下载 CNVD-2020-62422
    漏洞描述致远OA存在任意文件下载漏洞,攻击者可利用该漏洞下载任意文件,获取敏感信息影响版本致远OAA6-V5致远OAA8-V5致远OAG6漏洞复现fofa语法:app="致远互联-OA"登录页面如下:致远OAwebmail.do文件读取漏洞,由于/seeyon/webmail.do页面filePath参数过滤不严,导致可以......
  • uniapp切换主题颜色(后台管理系统)
    需求:在现有已经做好的后台管理系统添加一个切换主题颜色的功能分析:该项目用了很多uniapp的组件,css样式没有统一,类名也没有统一使用混合mixin.scss,并使用vuex效果图功能:按钮背景颜色、部分样式、字体图标、分页跟随主题颜色变化也变化每一个用户喜欢的主题颜色都不一样,后端......
  • 百度上传下载控件教程
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • 百度上传下载控件源码
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • uniapp app端如何使用插件实现获取手机应用自定义上传
    <u-buttonsize="mini"style="background-color:#3ac908;color:#ffffff;font-size:16rpx;width:110rpx;height:50rpx;"@tap="onUpload">上传</u-button>//以下代码写于根目录下第一个view顶部或跟在自定义导航栏后面<l-fileref="lFile&......
  • 百度上传下载控件代码
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • uniapp小程序隐私协议弹窗组件。自2023年9月15日起,对于涉及处理用户个人信息的小程序
    上代码 隐私组件代码直接复制就能用 <template> <viewclass="zero-privacy":class="[{'zero-bottom':position=='bottom'}]"v-if="showPrivacy"> <viewclass="zero-privacy-container":style="{&#......
  • 批量下载Markdown文件到本地
    批量下载Markdown文件到本地在Markdown文件中可能存在远程引用图片的情况,但是在某些情况下,我们处于无网环境,就可能造成Markdown查看异常1>[图片](https://cn.bing.com/images/search?q=%25E5%259B%25BE%25E7%2589%2587&FORM=IQFRBA&id=31F3A37194BC03C4AD16D80C327FF512......