UNPKG

eapp

Version:
193 lines (181 loc) 7.47 kB
Ibox("IEappApi.IUpdate.base", function (iboxLoad, exports, ibox) { // 引用父类IEappApi // var EappApi = iboxLoad('./'); // var EappApi = ibox.super; // var EappApi = iboxLoad('IEappApi'); // 工具类 var utils = Ibox.utils; /** * 获取壳子版本和网络版本比对信息 * @param callback */ exports.getOldNewVersionNet = function (callback) { // utils.showLog("IUpdate.base----getOldNewVersionNet-->"); // 获取apk壳子版本号 EappApi.getAppVersionNameAndCode(function (curVersionDataJO) { var curVersionCode = curVersionDataJO.code; // utils.showLog("IUpdate.base--curVersion--->", curVersionDataJO); // 当前运行的系统 // var osType = EappApi.curOs; var curTime = new Date().getTime(); var updateUrl; // 1 android;2 ios var type = "-1"; if (EappApi.isAndroid()) { type = "1"; updateUrl = ROOT_URL + "/_files/android/phone/latestVersion.json?v=" + curTime; } else if (EappApi.isIos()) { type = "2"; updateUrl = ROOT_URL + "/_files/ios/phone/latestVersion.json?v=" + curTime; } $.ajax({ url: updateUrl, success: function (dataJO) { // utils.showLog("IUpdate.base-->", dataJO); var verJO = { curVersion: curVersionDataJO.version, curCode: curVersionDataJO.code, newVersion: dataJO.versionname, newCode: dataJO.versioncode }; // 保存app当前版本 utils.saveItem(KEY.APP_VERSION, JSON.stringify(verJO)); // 回调 callback && callback(curVersionDataJO, dataJO); } }); }); }; /** * 检查版本更新 * @param noUpdateTip 没有更新,是否弹框提示 */ exports.checkVersionAndUpdate = function (noUpdateTip) { var self = this; // 获取壳子版本和网络版本比对信息 self.getOldNewVersionNet(function (curVersionJO, dataJO) { if (dataJO.versioncode === curVersionJO.code) { if (noUpdateTip) { self.showTipDialog("当前版本v" + curVersionJO.version + "为最新版本,无需更新!"); } return; } // utils.showLog("IUpdate--checkVersionAndUpdate--dataJO--->", dataJO); // android if (EappApi.isAndroid()) { var msgTip = 'android发现新版本v' + dataJO.versionname + ',立即更新?'; var newApkUrl = dataJO.url; // 1强制更新; if (dataJO.isstrong == "1") { self.showStrongUpdateDialog(msgTip, function () { utils.showLog("android强制更新-->", ""); self.checkAndroidWritePermission(newApkUrl); }); } // 2选择性更新 else if (dataJO.isstrong == "2") { self.showUpdateDialog(msgTip, function () { utils.showLog("android选择性更新-->", ""); self.checkAndroidWritePermission(newApkUrl); }, function () { // utils.showLog("android取消安装-->"); }); } } // ios else if (EappApi.isIos()) { var msg = 'ios发现新版本v' + dataJO.versionname + ',立即更新?'; var ios_update_url = dataJO.url; // 1强制更新; if (dataJO.isstrong == "1") { self.showStrongUpdateDialog(msg, function () { utils.showLog("ios强制更新-->", ""); self.gotoInstallIosPage(ios_update_url, "此版本有重要更新,需立即升级!请点击安装升级后再使用!"); }); } // 2选择性更新 else if (dataJO.isstrong == "2") { self.showUpdateDialog(msg, function () { utils.showLog("ios选择性更新-->", ""); self.gotoInstallIosPage(ios_update_url, ''); }, function () { // utils.showLog("取消安装-->"); }); } } }); }; /** * 下载apk,显示进度条 * @param newApkUrl */ exports.downloadApkAndShowProgress = function (newApkUrl) { // android下载并安装apk,可监控下载进度 EappApi.downloadAndInstallApk(newApkUrl, function (data) { if (data.status == 200) { utils.showLog("开始下载-->", data); // 显示下载进度条 loading.progress.show(); } else if (data.status == 201) { var per = data.progress; // 下载整数进度条 if (parseInt(per * 100) % 100 == 0) { var pg = parseInt(per); // utils.showLog("下载中-->" + pg + "%"); // 更新下载进度条 loading.progress.update(pg); } } else if (data.status == 202) { // 下载完成,关闭进度条 loading.progress.hide(); utils.showLog("下载完成-->", data); } else if (data.status == 203) { utils.showLog("下载失败-->", data); } else if (data.status == 400) { utils.showLog("未知失败-->", data); } }); }; /** * --------工具类----------------------------------- */ exports.showTipDialog = function (msg, callback) { msg = msg || '还未实现,敬请期待!'; popTipShow.alert('提示', msg, ['知道了'], function (e) { var button = $(e.target).attr('class'); if (button == 'ok') { callback && callback(); this.hide(); } } ); }; exports.showUpdateDialog = function (msg, okBack, cancelBack) { msg = msg || '还未实现,敬请期待!'; popTipShow.confirm('提示', msg, ["立即更新", "稍后再说"], function (e) { var button = $(e.target).attr('class'); if (button == 'ok') { okBack && okBack(); this.hide(); } else if (button == 'cancel') { cancelBack && cancelBack(); this.hide(); } } ); }; exports.showStrongUpdateDialog = function (msg, okBack) { msg = msg || '还未实现,敬请期待!'; popTipShow.alert('提示', msg, ['立即更新'], function (e) { var button = $(e.target).attr('class'); if (button == 'ok') { okBack && okBack(); this.hide(); } } ); }; });