uni-app检测版本是否需要更新

在App.vue文件里面

版本号和下载地址是接口数据,别的都是uni和html5+里面的方法

onLaunch: function() {
    // #ifdef APP-PLUS
    let _this = this;
    plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
      let platform = uni.getSystemInfoSync().platform == 'ios' ? 'iOS' : 'Android';
      _this.onUpdate(platform, widgetInfo)
    });
    // #endif
  }
检查是否需要更新
onUpdate(platform, widgetInfo) {
      // 检查更新
      let _this = this;
      _this.getreq('api/config/package').then((res)=>{
        let data = res.data.data;
        if (widgetInfo.version != data.vv) {
          uni.showModal({
            title: data.t,
            showCancel: data.f ? false : true,
            content: data.c,
            confirmText: '更新',
            success: function (result) {
              // 更新
              if (result.confirm) {
                let isWgt =  data.u.substring(data.u.length - 3);
                if (isWgt == 'wgt') {
                  _this.onDownloadWgt(data.u);
                } else {
                  _this.onDownloadApp(data.u);
                }
              }
            }
          });
        }
      });
    }

整包下载和wgt包下载

onDownloadApp(url) {
      // app 整包下载
      if (uni.getSystemInfoSync().platform == 'ios') {
        // ios
        plus.runtime.openURL(url);
      } else {
        // 安卓包
        uni.showLoading({
          title: '正在更新,大约需要1-5分钟'
        });
        let dTask = plus.downloader.createDownload(url, {}, function(d, status){
          // 下载完成
          if(status == 200){
            let path = d.filename;
            plus.runtime.install(path);  // 安装下载的apk文件
          }else{
            uni.showModal({
              title: '提示',
              content: '更新失败',
              showCancel: false
            })
          }
          uni.hideLoading();
        });
        // 监听下载进度
        dTask.addEventListener('statechanged',(task) => {
          if (!dTask) {
            return false;
          }
          let percentVal = 0;
          switch (task.state) {
            case 1:
              console.log('开始下载');
              break;
            case 2:
              console.log('链接到服务器...');
              break;
            case 3:
              percentVal = Math.ceil((task.downloadedSize / task.totalSize) * 100);
              _this.percent = percentVal;
              break;
            case 4:
              console.log('监听下载完成');
              break;
          }
        });
        // 开始下载
        dTask.start();
      }
    },
    onDownloadWgt(url) {
      // wgt热更新下载
      uni.downloadFile({
        url: url,
        success: (downloadResult) => {
          uni.hideLoading();
          if (downloadResult.statusCode === 200) {
            plus.runtime.install(downloadResult.tempFilePath, {
              force: true
            }, function() {
              plus.runtime.restart();
            }, function(e) {
            });
          }
        }
      });
      uni.showLoading({
        title: '正在更新,大约需要1-5分钟'
      });
    }
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值