使用vue H5打包的App如何检测版本更新?

前言:
本文章使用的是Vue+H5+Plus技术,结合Hbuildx打包的App,实现在App中检测版本和更新功能。

以下为实现相关代码介绍:

1、detectVersion() 方法在调用检测时触发的,主要用来检测当前App的版本是不是最新版本,如果当前版本不是最新版本,则需要给用户显示更新页面进行更新。

// 检测版本更新
detectVersion(){ // 发送请求
	axios({
		method: "post",
        timeout: 15000,
        url:'http://xxx.xxx.xxx', // 检测App是否有更新的地址
		data: {
            version:'1.0' // 当前版本号
        },
	}).then(response => {
        const path = response.path // 获取app 更新地址
        this.plusDownloader(path)
	})
	.catch(error => {
        console.log(error)
	});
},

2、plusDownloader()  方法是在用户确认更新时调用,主要实现了下载安装包以及实时更新进度条

// 下载监听器 urlPath: "http://下载链接.apk"
plusDownloader(urlPath){
    if(plus){
        const that = this
        // that.showProgress = true // 显示进度条组件(如果有)
        plus.nativeUI.showWaiting("新版本更新中,请耐心等待~");
        
        var downloadTask = plus.downloader.createDownload(urlPath,{}, function (d, status) {
            if (status == 200)  that.installWgt(d.filename);	// 安装wgt资源包
            else plus.nativeUI.toast("下载更新失败!");
            plus.nativeUI.closeWaiting();
        })
        downloadTask.start(); // 开始下载
        // 下载时实时显示下载进度
		var prg = 0;
		downloadTask.addEventListener("statechanged", function (task, status) { // 给下载任务设置一个监听 并根据状态  做操作
			switch (task.state) {
				case 1:
					//'正在下载';
					break;
				case 2:
					// '已连接到服务器';
					break;
				case 3:
					prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100);
					that.percentageNum = prg; // 赋值进度
					break;
				case 4:
					that.showProgress = false; // 进度条隐藏
					break;
			}
		});
    }
},

3、 installWgt() 方法是在一切准备就绪后进行App的安装工作

installWgt(path) { // 安装
    const _this = this
    plus.nativeUI.closeWaiting();
	plus.nativeUI.showWaiting("安装更新");
	plus.runtime.install(
		path,
		{},
		function () { // 安装更新成功
			plus.nativeUI.closeWaiting();
			plus.nativeUI.alert("更新完成!", function () {
				plus.runtime.restart(); //安装成功后重启应用
			});
		},
		function (e) { // 安装更新失败
			plus.nativeUI.closeWaiting();
			// console.log("安装更新失败![" + e.code + "]:" + e.message);
			plus.nativeUI.toast("安装更新失败!");
		}
	);
},

        

总结:

在App中检测版本更新首先需要判断当前已安装的app版本号是否是最新的(可通过后端接口返回、也可通过第三方SDK 中的API 来获取是否为最新版本),不是最新的则执行版本更新功能(plusDownloader 方法)。实现方式主要通过plus.downloader.createDownload下载apk包,下载完成后通过plus.runtime.install来进行安装,在下载时给下载任务设置一个监听根据状态实时更新下载进度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值