• VueApp 自动更新解决plus is not defined问题


    一,今天用VueApp 做自动更新调用按照网上列子直接 Plus 打包编译后出现了plus is not defined 

     发现需要引用document.addEventListener("plusready",function(){}) 

    代码如下

    <script>
    
    
    export default {
      name: "looklive",
      components: {
        // eslint-disable-next-line vue/no-unused-components
        headcontrol,
      },
      data() {
        return {
          path: "",
          installFlag: false,
        };
      },
      mounted() {
        //自动更新
        this.getNativeVersion();
      },
      methods: {
        // 获取当前版本号
        getNativeVersion() {
          let that = this;
          document.addEventListener("plusready", function () {
            plus.runtime.getProperty(plus.runtime.appid, function (inf) {
              that.nativeVersion = inf.version;
              that.checkUpdate(inf.version);
              localStorage.setItem("nativeVersion", inf.version);
            });
          });
        },
        // 检查更新
        checkUpdate(nativeVersion) {
          let that = this;
          const checkUrl = "http://119.23.211.81:8000/api/ip/GetAppVersion";
          that.axios.get(checkUrl).then((result) => {
            // alert("服务区版本" + result.data.version);
            //alert(nativeVersion);
            if (!that.VersionContrast(nativeVersion, result.data.version))
              that.downloadApk(result.data.url);
          });
        },
        //版本号对比
        VersionContrast(curV, reqV) {
          // 当前版本号:curV;比较版本号:reqV
          if (curV && reqV) {
            let arr1 = curV.split("."),
              arr2 = reqV.split(".");
            let minLength = Math.min(arr1.length, arr2.length),
              position = 0,
              diff = 0;
            //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
            while (
              position < minLength &&
              (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
            ) {
              position++;
            }
            diff = diff != 0 ? diff : arr1.length - arr2.length;
            //若curV大于reqV,则返回true
    
            return diff >= 0;
          }
        },
        // 下载apk文件
        downloadApk(url) {
          let that = this;
    
          let watiting = plus.nativeUI.showWaiting("安装文件...");
          let dtask = plus.downloader.createDownload(url, {
            method: "GET",
            retry: 0,
          });
          dtask.addEventListener(
            "statechanged",
            function (task, status) {
              if (!dtask) {
                return;
              }
              switch (task.state) {
                case 1:
                  break;
                case 2:
                  break;
                case 3:
                  var nowData = Math.floor(
                    (task.downloadedSize * 100) / task.totalSize
                  );
                  console.log(nowData);
                  if (nowData % 10 === 0) {
                    watiting.setTitle("已下载:" + nowData + "%");
                    if (nowData === 100) {
                      watiting.toast("正在准备环境,请稍后!");
                      watiting.close();
                    }
                  }
                  break;
                case 4:
                  // 安装apk资源包
                  plus.runtime.install(
                    dtask.filename,
                    {},
                    function () {
                      plus.nativeUI.closeWaiting();
                      plus.nativeUI.alert("更新完成!", function () {
                        //  更新完成后重启应用
                        plus.runtime.restart();
                      });
                    },
                    function (e) {
                      plus.nativeUI.closeWaiting();
                      plus.nativeUI.toast("安装更新失败!");
                    }
                  );
                  break;
                default:
                  break;
              }
            },
            false
          );
          dtask.setRequestHeader("Access-Control-Allow-Origin", "*");
          dtask.start();
        },
      },
    };
    </script>

    效果如下

      

  • 相关阅读:
    openstack 使用cloud init 和 console-log, nbd或者libguestfs 获取VM中的硬件信息。
    Unity doesn't load, no Launcher, no Dash appears
    ssh 应用
    设计感悟——产品的3个属性
    别让用户发呆—设计中的防呆的6个策略
    用户流失原因调研4步经
    5种方法提高你网站的登录体验
    浅谈当下7个网页设计趋势(转)
    适应各浏览器图片裁剪无刷新上传jQuery插件(转)
    C#操作Excel数据增删改查(转)
  • 原文地址:https://www.cnblogs.com/zt199510/p/13879768.html
Copyright © 2020-2023  润新知