我们现在UAT环境的app是用appcan和html5进行制作,好多朋友都在问UAT app升级如何做的
我们在zy_control.js里面会创建几个变量 version 表示是当前app 的版本号(备注 :因为zy_control 包含了appcan一些初始化代码所以基本每个页面都需要导入这个js)
在每次打开app的时候 我们在欢迎界面会调用appcan widgetOne 获取平台性 判断当前手机是IOS 还是安卓
uexWidgetOne.getPlatform();//获取平台版本 (step:1) uexWidgetOne.cbGetPlatform = function(opId, dataType, data) { var update = 0; if (data == 1) { update = 1; } else { //我是IOS update = 2; } setstorage("sysos",update);//把当前的手机型号存入缓存 $.ajax({ type: ‘GET‘, url: ApIp + "/ManagerDemo/app/update.do?type=" + update, dataType: ‘json‘, timeout: 20000, error: function(){ msgPrompt(getLang("wlanError")) }, success: function(data){ console.log(data) if (data.msg == 10000) { return; } updateUrl = data.appUrl; setstorage(‘updateUrl‘, updateUrl); setstorage("remoteVersion", data.version);// } }); };
然后发起请求到后台获取最新版本号根据传入类型 获取最新版本号 然后获取到版本号 存入缓存
setstorage("remoteVersion", data.version);//
当用户在点击功能时候 根据当前的版本号 和远程版本号 不一致进行下载操作 IOS 必须要跳转到URL进行安装
checkLogin:function (){ var url=getstorage("updateUrl"); if (menu.remoteVersion != null ) { if (menu.remoteVersion != version) { uexWindow.cbConfirm = function(){ switch(index_content.os){ case 1: beihai365_app_update(); break; case 2: uexWidget.loadApp(url,null,null); } }; uexWindow.confirm(getLang("sureMsg"), getLang("suerToUpdate"), [getLang("sure"), getLang("nosure")]); return false; } } return menu.judgeSessionId(); } function beihai365_app_update(){ var flag_sdcard = 1; var fileName = ‘AppPer.apk‘;//新版本文件名 var updateurl = getstorage("updateUrl")+fileName;//下载新apk文件地址 var filepath2 = "/sdcard/";//保存到sd卡 var platform1 = ‘‘;//平台版本 //var update_msg = "当前有新版本,是否更新?"; //提示文字 //安卓版 ,显示下载进度 (step:7) uexDownloaderMgr.onStatus = function(opId, fileSize, percent, status) { if (status == 0) { // 下载中... //alert(‘download percent ‘ + percent + ‘%‘); uexWindow.toast(‘1‘, ‘5‘, ‘下载进度:‘ + percent + ‘%‘, ‘‘); } else if (status == 1) {// 下载完成. uexWindow.closeToast(); uexDownloaderMgr.closeDownloader(‘14‘);//关闭下载对象 //localStorage.clear(); //alert(filepath2+fileName); uexWidget.installApp(filepath2+fileName);// 安装下载apk文件 } else { uexDownloaderMgr.closeDownloader(‘14‘);//关闭下载对象 //uexWindow.toast(‘1‘, ‘5‘, ‘请确保SD卡可正常使用.‘, ‘‘); } }; //安卓版 ,创建下载对象回调函数(step:6) uexDownloaderMgr.cbCreateDownloader = function(opId, dataType, data) { //alert(‘uexDownloaderMgr.cbCreateDownloader data=‘+data); if (data == 0) { //updateurl是通过调用cbCheckUpdate回调后,放入全局变量的 uexDownloaderMgr.download(‘14‘, updateurl, filepath2+fileName, ‘0‘);//开始下载apk文件 } else if (data == 1) { ; } else { ; } }; //检查是否已经存在sd卡的回调函数(step:3) uexFileMgr.cbIsFileExistByPath = function(opCode, dataType, data) { //alert(‘uexFileMgr.cbIsFileExistByPath flag_sdcard=‘+flag_sdcard+‘ , data=‘+data); if (flag_sdcard == 0) { if (data == 0) { scscms_alert(getLang("SDCard"), getLang("sure")); // alert(‘请检查手机的sd卡是否正常‘); } else { if (platform1 == 1) { //安卓版更新,通过创建下载对象进行下载 uexDownloaderMgr.createDownloader("14"); }else if(platform1 == 0){ //苹果更新 // uexWidget.loadApp("", "", updateurl); } } } }; //获取平台版本回调函数,确定是客户端是那个平台的客户端 (step:2) uexWidgetOne.cbGetPlatform = function(opId, dataType, data) { //alert(‘b‘); //获取系统版本信息回调函数 platform1 = data; //alert(platform1); console.log(platform1); if (data == 1) { // 是android flag_sdcard = 0; uexFileMgr.isFileExistByPath(‘/sdcard/‘);//先判断是否存在sd卡,再调用checkUpdate来进行更新 }else if(data == 0){ //alert("我是IOS"); //uexWidget.checkUpdate(); } }; uexWidgetOne.getPlatform();//获取平台版本 (step:1) } 备注:appcan 以前确实不稳定 但是现在目前版本还是非常稳定。非常感谢appcan对我们技术的support,目前我们的app快超过千人使用 升级功能比较稳定。
时间: 2024-11-10 01:25:22