1. 程式人生 > >cordova 跨平臺APP版本升級

cordova 跨平臺APP版本升級

== api .com urn ios ionic ring return func

利用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版本升級