【UNI-APP OR H5+ 开发-必看教程】APP自动更新实现(带进度条)

2023-05-16

UNI-APP笔记-底部附源码!!!

【下面附一段实战应用的案例】

——Down plus.downloader.createDownload(url,option,completedCB)

自动更新:DownLoader

        Downloader模块管理网络文件下载任务,用于从服务器下载各种文件,并支持跨域访问操作。通过plus.downloader获取下载管理对象。Downloader下载使用HTTP的GET/POST方式请求下载文件,符合标准HTTP/HTTPS传输协议。

方法:

createDownload新建下载任务
enumerate枚举下载任务
clear清除下载任务
startAll开始所有下载任务

对象:

Download管理一个下载任务
DownloadEvent下载任务事件类型
DownloadState下载任务状态
DownloadOptions下载任务参数

回调方法:

DownloadCompletedCallback下载任务完成时的回调
DownloadStateChangedCallback下载任务状态变化回调
DownloadEnumerateCallback枚举下载任务回调

使用: plus.downloader.createDownload(url,option,completedCB)

说明:

        请求下载管理创建新的下载任务,创建成功则返回Download对象,用于管理下载任务。

参数:

  • url: ( String ) 必选 要下载文件资源地址

    要下载文件的url地址,仅支持网络资源地址,支持http或https协议。 允许创建多个相同url地址的下载任务。 注意:如果url地址中包含中文或空格等,需要进行urlencode转换。

  • options: ( DownloadOptions ) 可选 下载任务的参数

    可通过此参数设置下载任务属性,如保存文件路径、下载优先级等。

  • completedCB: ( DownloadCompletedCallback ) 可选 下载任务完成回调函数

    当下载任务下载完成时触发,成功或失败都会触发。

返回值:

       新建的下载任务对象

附代码:

createDownload(url) {
				var dtask = plus.downloader.createDownload(url, {},
					function(d, status) {
						uni.showToast({
							title: '下载完成',
							mask: false,
							duration: 1000
						});
						// 下载完成
						console.log('status: ' + status);
						if (status == 200) {
							console.log('下载成功:' + d.filename);
							console.log('plus.io.convertLocalFileSystemURL(d.filename): ' + plus.io
								.convertLocalFileSystemURL(d.filename))
							plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, function(success) {
								uni.showToast({
									title: '安装成功',
									mask: false,
									duration: 1500
								});
							}, function(error) {
								uni.showToast({
									title: '安装失败-01',
									mask: false,
									duration: 1500
								});
							})
						} else {
							uni.showToast({
								title: '更新失败-02',
								mask: false,
								duration: 1500
							});
						}
					});
				try {
					dtask.start(); // 开启下载的任务
					var prg = 0;
					var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 
					
					dtask.addEventListener('statechanged', function(task, status) {
						console.log('自动更新测试1:',task) 
						console.log('自动更新测试2:',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) {
					console.log('错误信息',err)
					plus.nativeUI.closeWaiting();
				}
			}

思路:

1:初始化,调用后台更新接口

2:获取当前APP应用版本号,和应用版本名称

3:根据接口返回的数据判断是否需要更新,

4:不需要则提示,需要则进行以上代码更新的操作

后台更新数据表结构:

字段名含义说明
id标识列自增,唯一,非空
app_noapp应用版本号唯一,非空
app_nmapp应用版本名称唯一,非空
app_force是否强制更新默认不强制0
app_desc上传说明
app_time上传时间

另外如果有小伙伴对后台更新接口操作不清楚的同学,欢迎问答~

附官网文档链接:HTML5+ API Reference

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【UNI-APP OR H5+ 开发-必看教程】APP自动更新实现(带进度条) 的相关文章

  • 认识一下 Azure DevOps

    目录 新手入门 认识 安装入门 Azure Board 敏捷面板Azure Repos 代码仓库Azure Pipeline CI CD 管道Azure Test Plan 测试管理Azure Artifact 包托管 Azure DevO
  • 10个数比大小(排序)——冒泡和选择

    10个数比大小 xff08 排序 冒泡和选择 一 冒泡法 xff08 起泡法 xff09 冒泡排序的基本概念是 以升序排序为例 xff1a 依次比较相邻的两个数 xff0c 将小数放在前面 xff0c 大数放在后面 即在第一趟 xff1a
  • vue3 实现界面数据实时变化

    技术支持 xff1a Vue3 ElementUI WebSocket 库引用 pinia websocket 1 创建pinia文件夹 xff0c 目录如下 src pinia index js modules wsdata js 2 编
  • javascript BOM

    一 什么是BOM xff1a BOM xff08 Browser Object Model xff09 的意思是浏览器对象模型 BOM方法一般指的都是在浏览器 xff08 window xff09 中的方法 二 常见的BOM方法 事件 xf
  • Flutter 利用 FFI,绕过 Android JNI 直接调用 C++ 层!

    坏de牧羊人 作者 承香墨影 校对 https juejin cn post 6976824832595853342 原文 大家好 xff0c 这里是承香墨影 xff01 今天和大家聊聊 Flutter 与 C C 43 43 直接调用的方
  • 前端请求接口浏览器发起option预请求而导致405的问题

    记一次前端请求后端接口出现405的问题 xff1a 问题描述 xff1a 首先阐述http的405状态码 xff0c 405的直接提示是method not allowed xff0c 即前端请求的方法不被后端接受 xff08 如下图 xf
  • 如何变现?互联网商业产品模式详解

    本文由作者 海贝学姐 发布于社区 变现 商业化 商业模式 这些词相信大家都耳熟能详了 懂商业 xff0c 往往能让你在职场上更容易获得上升空间 xff0c 毕竟赚钱是每家企业最重要的目的之一 本文会对互联网商业产品的类型 模式 定价策略和角
  • 连接PC桌面和android手机的神器--scrcpy

    无意中发现一个手机调试和自动化测试的神器 xff0c Scrcpy xff0c 甚是强大 xff0c 探索了一番 xff0c 配合minitouch可以实现更自动化的操作 xff0c 但是也可以用python的pythonautogui这样
  • ubuntu配置远程桌面登录(两端都是ubuntu)

    1 从机 xff08 被访问端 xff09 安装x11vnc 可以ssh登录后安装 sudo apt get install x11vnc y 2 设置访问密码 sudo x11vnc storepasswd etc x11vnc pass
  • Linux下执行一些命令前加sudo时出现command not found的原因

    转载请注明来自 柳大的CSDN博客 xff1a http blog csdn net poechant 当我们用sudo来执行cd ls等命令时 xff0c 会出现command not found的提示 xff1a sudo cd hom
  • gcc-c++安装—使用系统自带的源yum install gcc-c++和本地源进行相应的安装

    进行yum本地源配置之前 xff0c 需要在虚拟机设置中将本地光盘设置为已连接状态 1 挂载光盘 一旦关机仍需重新挂载 xff08 指令挂载 xff09 su root切换到管理员并切换到其家目录 span class token name
  • WSL的使用与迁移

    WSL的使用与迁移 1 什么是WSL WSL是Windows Subsystem for Linux的简称 也就是说在window中运行的linux子系统 WSL最早是在windows10中引入的 xff0c 原始版本称为WSL1 WSL1
  • 为什么要使用cmake+VS重新编译的opencv库?

    为什么要使用cmake 43 VS重新编译的opencv库 xff1f 使用opencv需要编译源码 xff0c 得到库文件 可以用cmake构建项目后编译 xff0c 也可以直接用官方提供的编译好的版本 官方提供的编译库一般只是标准版本
  • 华为交换机难点学习:导出配置文件/同步时间

    华为交换机难点学习 span class token operator lt span HEXIN SWH span class token operator gt span dir all Directory of flash Idx A
  • 建立可持续集成系统(Jenkins)

    在软件工程实践中 xff0c 需要将开发完成的最终产品交付给用户 xff08 或发布给测试部门 xff09 xff0c 就需要我们将源代码编译为可执行文件 将各个分别开发的模块集合为一个完整的系统 xff0c 这个过程成为系统集成 xff0
  • 图像处理:图像滤波

    用于平滑图像的常见滤波算子包括 xff1a 1 均值滤波 xff08 normalized box filter xff09 xff1a 用其像素点周围像素的平均值代替元像素值 xff0c 在滤除噪声的同时也会滤掉图像的边缘信息 在Open
  • git码云仓库初次使用方法+命令(保姆级教学)

    本文使用辅助代码版本管理工具 xff1a sourceTree 背景 xff1a 如果是存在已有项目 xff0c 或是使用vue create创建的空项目脚手架 xff0c 现需要在git新建一个仓库 xff0c 然后将项目放进去 1 仓库
  • Linux 达梦数据库详细安装、部署、启动文档

    服务器版本为Centos7 达梦版本为达梦8 1 进入达梦官网 下载中心 武汉达梦数据库有限公司 dameng com 下载DM8试用版 CPU 版本以及 操作系统以自己服务器为例 xff0c 文档服务器CPU版本为X86 xff0c 操作
  • 工厂方法(python)

    简单工厂模式的最大优点就是工厂类内部包含了必要的逻辑判断 xff0c 客户端只要提供选择条件即可 xff0c 这样客户端就不需要知道具体产品的信息了 但是每次增加产品就要修改工厂类 xff0c 违背了 开放 封闭 原则 所以 xff0c 有
  • 【数据知多少】一文学懂通过Tushare、AKshare、baostock、Ashare、Pytdx获取股票行情数据(含代码)

    金融量化交易几种免费获取股票行情数据的方法 一 免费行情数据获取方式介绍1 Tushare简介安装代码仓库说明文档 2 AKshare简介安装代码仓库说明文档 3 baostock简介安装说明文档 4 Ashare xff08 自制爬虫类

随机推荐