HBuilder 打包vue的商城项目,进行版本进行升级功能

本人不太会描述,该文只是记录一下,该项目是我们公司自己项目,项目完成之后,要对项目进行版本升级,这个时候就要求,对已经下载我们app的用户进行版本提示,提示用户点击升级来进行,版本的更新。

第一次尝试的时候是在app.vue文件中,在methods方法中定义自己的获取hbuilder中项目的版本号,但不知道什么原因,打印的数据总是会打印两遍,之后又在真机上进行测试,总会出现各种问题,最后将方法放到了home页面,因为我们商城是用户没有登陆的时候也可以进行查看商品的,所以放在首页也是可以,下面就是代码

获取hbuilder中项目的版本号:

  // 获取版本号
    getNativeVersion () {
      let that = this;
      document.addEventListener("plusready", function () {
        plus.runtime.getProperty(plus.runtime.appid, function (inf) {
          that.nativeVersion = inf.version;
          localStorage.setItem("nativeVersion", inf.version);
          that.checkupdate()  /*  该函数是自己定义,用来获取后台返回的服务器端项目的版本号 */
        });
      });
    },
 
 //获取后端返回的服务器端的版本号,
checkupdate () {
      this.axios.post(‘接口地址url’ , qs.stringify({
      })).then((res) => {
        if (res.data.status == 1) {
          this.version = res.data.data.version  /* 后端返回的服务器上面的版本号 */
          this.downurl = res.data.data.downurl   /* 后端返回的新版本的app的apk地址 */
          // alert(res.data.data.version + '接口版本')
          // alert(localStorage.getItem('nativeVersion') + 'hbuilder版本')
          // alert(res.data.data.version != localStorage.getItem('nativeVersion'))
          if (res.data.data.version != localStorage.getItem('nativeVersion')) {   /* 将后台返回的版本号和自己获取的hbuilder进行对比,不相等时说明版本不一致,弹出提示框,提示用户进行升级 */
            MessageBox.confirm('', {
              title: '提示',
              message: '发现新版本',
              confirmButtonText: '升级',
              cancelButtonText: '取消'
            }).then(action => {
              if (action == 'confirm') {
                plus.nativeUI.toast("正在准备环境,请稍后!");
                var dtask = plus.downloader.createDownload(this.downurl, {}, function (d, status) {
                  if (status == 200) {
                    var path = d.filename;   /* 下载apk */
                    plus.runtime.install(path);   /* 自动安装apk文件 */
                  } else {
                    plus.nativeUI.alert('版本更新失败:' + status);
                  }
                });
                dtask.start();
              }
            }).catch(error => {
              if (error == 'cancel') {
                alert('取消升级');
              }
            });
          } else {
            console.log('版本一致')
          }
        } else {
          alert(res.data.data.version)
        }
      }).catch((err) => {
        console.log(err);
      });
    },
 
写的时候参考了很多的文章,写的有什么问题欢迎大佬们指导。

 

posted @ 2020-11-14 10:56  小小小~  阅读(576)  评论(0编辑  收藏  举报