appcan自動アップグレード機能について
5859 ワード
現在UAT環境のアプリはappcanとhtml 5で作成されており、多くの友人がUATアプリのアップグレード方法を聞いています
私たちはzy_control.jsには、現在のappのバージョン番号を示す変数versionがいくつか作成されます(注記:zy_controlにはappcanの初期化コードが含まれているため、基本的には各ページにこのjsをインポートする必要があります).
アプリを開くたびにウェルカムインタフェースでappcan widgetOneを呼び出してプラットフォーム性を取得し、現在の携帯電話がIOSなのかアンドロイドなのかを判断します.
ユーザーが機能をクリックしている間に現在のバージョン番号とリモートバージョン番号が一致しないことに基づいてダウンロード操作を行うIOSはURLにジャンプしてインストールする必要があります
私たちはzy_control.jsには、現在のappのバージョン番号を示す変数versionがいくつか作成されます(注記:zy_controlにはappcanの初期化コードが含まれているため、基本的には各ページにこのjsをインポートする必要があります).
アプリを開くたびにウェルカムインタフェースで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
。