123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /**
- * 作者:王成
- * 创建日期:2022年10月31日
- * 操作系统:MAC
- * 描述:App更新脚本
- */
- /**
- * App升级
- */
- function appUpload() {
- getConfigInfo(function(appInfo) {
- /* 开始联网检查 */
- asyncCheckAppVerison(appInfo);
- })
- }
- /**
- * 远程检查App版本信息
- * @param {JSON} appInfo App信息
- */
- function asyncCheckAppVerison(appInfo) {
- sendAjax({
- url: 'appQueryVersion',
- waitMessage: '版本检查...',
- success: function(resData) {
- var resVersionCode = resData[0].versionCode;
- if (parseInt(resVersionCode) > parseInt(appInfo.versionCode)) {
- /* 需要升级 */
- var msg = "检测到新版本:" + resData[0].versionName + ",是否现在更新?";
- muiConfirm(msg, '升级', function() {
- console.log(resData[0].appDownloadUrl);
- downloadAppFile(resData[0].appDownloadUrl, resData[0].appName);
- });
- } else {
- var msg = "App版本:" + appInfo.version + "已是最新!";
- muiAlert(msg, "提示");
- }
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /* 下载任务 */
- var downloadTask = undefined;
- var downloadFileName = undefined;
- var downloadPath = "_doc/update/";
- /**
- * 下载需要的Apk文件
- * @param {string} fileUrl 文件下载地址
- * @param {string} fileName 下载的文件名称
- */
- function downloadAppFile(fileUrl, fileName) {
- downloadFileName = fileName;
- /* 检查现在的文件是否存在 */
- checkFileExists({
- url: downloadPath + downloadFileName + ".apk",
- success: function(entry) {
- deleteFile({
- entry: entry,
- success: function() {
- beginDownloadFile(fileUrl);
- },
- error: function() {
- muiAlertError("安装包处理异常,请联系管理员!");
- }
- })
- },
- error: function(err) {
- console.log("文件不存在,直接下载!");
- beginDownloadFile(fileUrl);
- }
- })
- }
- /**
- * 开始下载文件
- * @param {string} fileUrl 下载文件的网络路径
- */
- function beginDownloadFile(fileUrl) {
- /* 创建下载任务 */
- downloadTask = plus.downloader.createDownload(fileUrl, {
- filename: downloadPath,
- }, function(d, status) {
- if (status == 200) {
- /* 下载成功 调用安装 */
- installApp(d.filename);
- //console.log(d.filename);
- } else {
- muiAlertError("升级文件下载失败,请联系管理员!");
- }
- });
- /* 挂接事件 */
- downloadTask.addEventListener('statechanged', onStateChange, false);
- downloadTask.start();
- }
- /**
- * 检测文件是否存在
- * @param {JSON} options 配置项
- */
- function checkFileExists(options) {
- mui.plusReady(function() {
- plus.io.resolveLocalFileSystemURL(options.url, function(entry) {
- if (entry.isFile) {
- if (options.success) options.success(entry);
- } else {
- if (options.error) options.error("非文件");
- }
- }, function(err) {
- if (options.error) options.error(err);
- });
- });
- }
- /**
- * 删除文件
- * @param {JSON} options 配置项
- */
- function deleteFile(options) {
- options.entry.remove(function(entry) {
- if (options.success) options.success();
- }, function(err) {
- if (options.error) options.error(err);
- });
- }
- /**
- * 安装应用
- * @param {string} filePath apk文件路径
- */
- function installApp(filePath) {
- mui.plusReady(function() {
- console.log("安装文件:" + filePath);
- plus.runtime.install(filePath, {
- force: true, //强制安装
- }, function() {
- muiAlert("应用更新完成!", "敬告", function() {
- plus.runtime.restart();
- });
- }, function(e) {
- muiAlertError("应用更新失败[" + e.code + "]:" + e.message);
- });
- })
- }
- /**
- * 下载状态监听
- * @param {Object} download 下载任务对象
- * @param {number} status 状态值
- */
- function onStateChange(download, status) {
- // console.log("当前下载状态 = " + status);
- switch (download.state) {
- case undefined:
- muiShowWaitLoading("准备中...");
- break;
- case 0:
- muiShowWaitLoading("请求下载...");
- break;
- case 3:
- var size = download.downloadedSize;
- var total = download.totalSize;
- var msg = "[" + downloadFileName + "]文件下载中,进度 " + ((parseFloat(size) / parseFloat(total)) * 100)
- .toFixed(
- 2) + "%";
- muiShowWaitLoading(msg);
- break;
- case 4:
- muiCloseWaitLoading();
- break;
- }
- }
|