咱們如今UAT環境的app是用appcan和html5進行製做,好多朋友都在問UAT app升級如何作的 html
咱們在zy_control.js裏面會建立幾個變量 version 表示是當前app 的版本號(備註 :由於zy_control 包含了appcan一些初始化代碼因此基本每一個頁面都須要導入這個js) html5
在每次打開app的時候 咱們在歡迎界面會調用appcan widgetOne 獲取平臺性 判斷當前手機是IOS 仍是安卓 android
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進行安裝 ajax
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快超過千人使用
升級功能比較穩定。