eapp
Version:
193 lines (181 loc) • 7.47 kB
JavaScript
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();
}
}
);
};
});