码迷,mamicode.com
首页 > 移动开发 > 详细

cordova 跨平台APP版本升级

时间:2017-09-12 15:51:27      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:ade   更新   失败   跳转   nic   个数   标签   版本升级   type   

利用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;
        });
      }
    }

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

 

cordova 跨平台APP版本升级

标签:ade   更新   失败   跳转   nic   个数   标签   版本升级   type   

原文地址:http://www.cnblogs.com/wjw-blog/p/7509885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!