uniapp -- app更新记录

287 阅读1分钟

uniapp实现app的版本更新

逻辑实现

  校验本地设备版本号和服务器版本号,假如本地和服务器的版本号不一致,app初始化的时
候就可以进行更新,这个校验涉及两种,前端校验和后端校验都可行,看个人爱好

流程

flowchart LR
A[请求接口] --> B(接口校验)
B --> C{是否最新版本}
C -->|是| D[更新下载]
C -->|否| E[维持]

代码实现

  理解具体代码前,了解以下api
   plus.runtime.version    //获取设备当前版本号,初始化1.0.0
plus.runtime.install(filePath, options, installSuccessCB, installErrorCB);
参数说明:
filePath //安装的文件路径
options  //应用安装设置的参数, force:是否强制安装,默认false
installSuccessCB //成功回调
installErrorCB //失败回调
plus.runtime.restart() 重启当前应用
 全部逻辑代码如下 
postUrl() {
    var _this = this;
    uni.request({
        url: `****`, //请求接口
        method: 'POST',
        success: result = >{
            console.log(plus.runtime.version) //这一句可获取当前版本号
            //中间省略逻辑校验即开始下载,具体看业务场景
            this.startUpate(result.data.apkUrl)
        },
    })
},
startUpate(url) {
    uni.showLoading({
        title: '更新中……'
    }) uni.downloadFile({ //执行下载
        url: url,
        //下载地址
        success: downloadResult = >{ //下载成功
            uni.hideLoading();
            if (downloadResult.statusCode == 200) {
                uni.showModal({
                    title: '',
                    content: '更新成功,确定现在重启吗?',
                    confirmText: '重启',
                    confirmColor: '#EE8F57',
                    success: function(res) {
                        if (res.confirm == true) {
                            plus.runtime.install( //安装
                            downloadResult.tempFilePath, {
                                force: true
                            },
                            function(res) {
                                utils.showToast('更新成功,重启中');
                                plus.runtime.restart();
                            });
                        }
                    }
                });
            }
        }
    });
},

记录完毕,谢谢点赞