• cordova 跨平台APP版本升级


    利用cordova+ionic开发好项目,之后就是打包发布,在这之前,还要做一个版本升级的小功能。

    首先我们项目根目录里自然少不了配置:config.xml中

    如图。version,我们以后每次升级APP就从这个wiget标签中读取version字段。

    cordova已经给们提供了APP版本获取插件工具,cordova-plugin-appversion

    通过插件获取到本地app的版本号,通过请求获取后台的版本号。然后比较。

    function onReady() {
            cordova.getAppVersion.getVersionNumber().then(function (version) {
    
            });
            Popup.waitLoad('正在检查是否有可更新版本');
            CommonApi.getUpgradeVersionInfo(function (res) {
              if (!res.success) {
                throw new Error("获取应用版本号信息失败" + (res.retInfo ? res.retInfo : ""));
              }
              Popup.hideLoading();
              var appVersion = res.data.dataObject.serverVersion;
              var upgradeInfo = res.data.dataObject.upgradeInfo;
              var url = res.data.dataObject.updateUrl;
              console.log("platform is ios: " + ionic.Platform.isIOS());
              //获取当前app版本信息
              if (compareVersion(version,appVersion)) {
                showUpdateConfirm(upgradeInfo, url, appVersion);
              } else {
                Popup.promptMsg('没有新版本可用', "更新提示");
              }
            }, {versionFlag: versionFlag});
          }
        };
    

      比较函数

    compareVersion(version,appVersion),前后台约定,版本号使用“语义化版本”。如x.y.z。前后台都用三个数被两个点隔开的方式。
    /**
         * 比较版本号
         * @param localVersion 本地app版本号
         * @param newVersion 服务器返回版本号
         * @returns {boolean}
         */
        function compareVersion(localVersion, newVersion) {
          console.log("新版本 %s- 旧版本 %s", newVersion, localVersion);
          if (typeof  localVersion === 'string' && typeof  newVersion === 'string'){
              var localVersionArray = localVersion.split('.');
              var newVersionArray = newVersion.split('.');
              if(localVersionArray.length === newVersionArray.length){
                  for (var i = 0; i < localVersionArray.length; i++){
                    if(parseInt(newVersionArray[i]) > parseInt(localVersionArray[i])){
                      return true;
                    }else if(parseInt(newVersionArray[i]) > parseInt(localVersionArray[i])) {
                      return false;
                    }else {
                      continue;
                    }
                  }
                  return false;
              }else {
                  Popup.loadMsg('版本号记录错误',500,function () {
                      return;
                  });
              }
          }else {
            Popup.loadMsg('版本号记录错误',500,function () {
                return;
            });
          }
        }

    版本比较后,有新版本就在浏览器中跳转到指定地址下载。

  • 相关阅读:
    AcWing 2476. 树套树(线段树套splay)
    LeetCode 1191 K 次串联后最大子数组之和
    LeetCode 668 乘法表中第k小的数
    Java003-String字符串
    云原生CD工具spinnaker部署(容器化灰度发布)
    刷题日记
    8.22 校内模拟赛 题解报告
    关于 CDQ分治(复习)
    解题营_数论
    解题营_动规
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/7509885.html
Copyright © 2020-2023  润新知