cordova监测apk版本是否是最新的,更新下载apk

本文介绍了如何在Vue项目中实现APP内部检测和下载新版本的过程。通过使用cordova插件,如cordova-plugin-app-version、cordova-plugin-file和cordova-plugin-file-transfer等,实现了在APP内部检查更新、下载APK并自动打开安装。当遇到无法使用默认浏览器下载问题时,作者转向了在APP内部进行下载更新的解决方案。
摘要由CSDN通过智能技术生成

我起初的做法是:将版本卸载了vue项目的配置文件中,进入首页的时候对比数据库版本和配置文件中的版本是否一致,如果配置文件中的版本比数据的低,则提示不是最新版本,询问是否更新,点击更新后跳到系统默认浏览器或者指定的浏览器下载。上机测没问题,以为一切完美。
在这里插入图片描述
然而,测试人员使用小米手机测试的时候发现,提示无法找到路径,我怀疑的是他的手机不能打开默认浏览器,于是将apk地址改成了随便一个网页地址,继续上机测试,成功跳转到手机浏览器并打开了网页,,,中间尝试过开权限,然而也并无效果。
就这样,开始换个思路。。。不用浏览器下载,直接在app内部进行下载更新,果然,在网上一搜,cordova支持app内部下载apk。完美不?
需要安装的插件如下:在cordova根目录下执行下面命令安装。

//获取app版本号
cordova plugin add cordova-plugin-app-version 
//提供一个临时存储文件的地方
cordova plugin add cordova-plugin-file
//实现上传下载
cordova plugin add cordova-plugin-file-transfer
//下载后打开
cordova plugin add cordova-plugin-file-opener2

所有插件都已备齐,下面开始业务开发:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码如下:
由于我一开始就是使用配置文件来存地址,所以这部分代码没有改。其实可以从cordova的配置文件中获取。
在这里插入图片描述
在这里插入图片描述

//对比版本
//获取版本检查
        getVersion() {
            return new Promise((resolve) => {
                this.$axios.get(process.env.VUE_APP_USER_SEVER_NAME + '...', {
                    params: {
                        type: 1
                    }
                }).then((res) => {
                    if (res.data.data.version != this.currentVersion) {    //有新版本
                        this.hasNewVersion = true
                        this.apkId = res.data.data.id
                        this.newVersionUrl = res.data.data.url             //地址
                        this.newVersionNumber = res.data.data.version    //版本号
                    }
                    resolve()
                })
            })
        },
//更新版本
        updateVersion() {
            var url = this.newVersionUrl
            var targetPath = cordova.file.externalCacheDirectory + "Download/Pass/" + "test.apk"; //要下载的目标路径及文件名(本地存储路径)
            // 初始化FileTransfer对象
            var fileTransfer = new FileTransfer();
            // 调用download方法
            fileTransfer.download(
                url, //uri网络下载路径
                targetPath, //url本地存储路径
                function (entry) {
                    // console.log("entry: " + entry);
                    // console.log("download complete: " + entry.toURL());
                    cordova.plugins.fileOpener2.open(
                        targetPath,
                        'application/vnd.android.package-archive',
                        {
                            error: function (e) {
                                console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
                                Dialog.alert({
                                    title: "打开下载文件失败",
                                    message: "请退出后重新进入应用",
                                }).then(res => {
                                    navigator.app.exitApp();
                                })
                            },
                            success: function () {
                                console.log('open successfully');
                            }
                        })
                },
                function (error) {
                   
                }
            );
            //监测下载进度
            fileTransfer.onprogress = function (progressEvent) {
                if (progressEvent.lengthComputable) {
                    var downloadProgress = (progressEvent.loaded / progressEvent.total) * 100;
                    var result = "已下载:" + Math.floor(downloadProgress) + "%";
                    if (Math.floor(downloadProgress) == 100) {
                        Dialog.alert({
                            title: result,
                            message: "下载完成后会自动弹出安装",
                            showConfirmButton: false,
                            showCancelButton: true
                        }).then(
                        ).catch(() => {
                            // on cancel
                            navigator.app.exitApp();
                        })
                    } else {
                        Dialog.alert({
                            title: result,
                            message: "下载完成后会自动弹出安装",
                            showConfirmButton: false,
                            showCancelButton: false
                        })
                    }
                }
            };
            this.showPop = false
        },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值