關於appcan自動升級功能

咱們如今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快超過千人使用 
升級功能比較穩定。
相關文章
相關標籤/搜索