使用Appcan客户端自动更新PHP版本号(全)
在项目开发过程中遇到app端自动更新,查阅了相关资料然后把Appcan客户端自动更新PHP版本号的方法整理出来,具体代码讲解如下。
服务端文件:update.php、version.php、version.xml
update.php内容:
PHP
<?php
define('CIN',true);
$oldver=$_REQUEST['ver'];//客户端传过来的版本号
$platform=$_REQUEST['platform'];//客户端的平台
$info=simplexml_load_file('version.xml');
$iphone_filename=$info->news['iphone_filename'];//iphone下载文件
$android_filename=$info->news['android_filename'];//androiad下载文件
$version=$info->news['version'];//版本号
if($version>$oldver)
{
switch($platform)
{
case"0"://iphone
echo"<?xmlversion=\"1.0\"encoding=\"utf-8\"?>";
echo"<results>";
echo"<updateFileName>i2ty</updateFileName>";//客户端名字
echo"<updateFileUrl>itunesURL</updateFileUrl>";//返回给客户端的下载地址
echo"<fileSize>0</fileSize>";//文件大小
echo"<version>".$version."</version>";//版本信息
echo"</results>";
break;
case"1"://android
echo"<?xmlversion=\"1.0\"encoding=\"utf-8\"?>";
echo"<results>";
echo"<updateFileName>i2ty</updateFileName>";//客户端名字
echo"<updateFileUrl>http://i2ty.com/app/".$android_filename."</updateFileUrl>";//返回给客户端的下载地址
echo"<fileSize>0</fileSize>";//文件大小
echo"<version>".$version."</version>";//版本信息
echo"</results>";
break;
}
}
?>
version.php内容:
PHP
<?php
define('CIN',true);
$result['vtitle']="更新";
$result['vcontent']="新版本有更新喔!~新增功能修复各种错误";
print_r(json_encode($result));
?>
version.xml内容:
PHP
<?xmlversion="1.0"encoding="utf-8"?>
<rootdesc="Login">
<newsversion="00.00.0001"iphone_filename="i2ty.ipa"android_filename="i2ty.apk"/>
</root>
index.html客户端:
PHP
window.uexOnload=function(type){
if(!type){
update();
}
varflag_sdcard=1;
varupdateurl='';//下载新apk文件地址
varfilepath2="/sdcard/";//保存到sd卡
varfileName='';//新版本文件名
varplatform='';//平台版本
functionupdate()
{
//安卓版,显示下载进度(step:7)
uexDownloaderMgr.onStatus=function(opId,fileSize,percent,status){
if(status==0){
//下载中...
Log('downloadpercent'+percent+'%');
uexWindow.toast('1','5','正在下载'+localStorage.app_title+'新版,请稍后。进度:'+percent+'%','');
}elseif(status==1){//下载完成.
uexWindow.closeToast();
uexDownloaderMgr.closeDownloader('14');//关闭下载对象
uexWidget.installApp(filepath2+fileName);//安装下载apk文件
}else{
uexWindow.toast('1','5','下载出错,请关闭'+localStorage.app_title+'再次运行.','');
}
};
//安卓版,创建下载对象回调函数(step:6)
uexDownloaderMgr.cbCreateDownloader=function(opId,dataType,data){
Log('uexDownloaderMgr.cbCreateDownloaderdata='+data);
if(data==0){
//updateurl是通过调用cbCheckUpdate回调后,放入全局变量的
uexDownloaderMgr.download('14',updateurl,filepath2+fileName,'0');//开始下载apk文件
}elseif(data==1){
;
}else{
;
}
};
//提示更新模态框按钮事件回调函数,判断用户选择更新还是取消(step:5)
uexWindow.cbConfirm=function(opId,dataType,data){
Log('uexWindow.cbConfirm');
//调用对话框提示函数
if(data==0){
//用户点击稍后按钮,不进行更新
}else{
//用户点击确定按钮,进行更新
if(platform==0){
//苹果版更新,通过浏览器加载appstore路径
uexWidget.loadApp(updateurl,'','');
//uexWidget.loadApp("","",updateurl);//旧方法已经不可以使用了。
}elseif(platform==1){
//安卓版更新,通过创建下载对象进行下载
uexDownloaderMgr.createDownloader("14");
}else{
;
}
}
};
//调用检查更新回调函数,请求成功后,弹出模态框让用户选择是否现在更新(step:4)
uexWidget.cbCheckUpdate=function(opCode,dataType,jsonData){
Log('jsonData='+jsonData);
varobj=eval('('+jsonData+')');
if(obj.result==0){
//tips="更新地址是:"+obj.url+"<br>文件名:"+obj.name+"<br>文件大小:"+
//obj.size+"<br>版本号:"+obj.version;
updateurl=obj.url;
fileName=obj.name+".apk";
getVersionContent();
//varvalue="稍后;更新";
//varmycars=value.split(";");
//uexWindow.confirm('','当前有新版本,是否更新?',mycars);//弹出提示框,是否确定更新
}elseif(obj.result==1){
//苹果
//alert("更新地址是:"+obj.url+"<br>文件名:"+obj.name+"<br>文件大小:"+
//obj.size+"<br>版本号:"+obj.version)
;//tips="当前版本是最新的";alert(tips);
}elseif(obj.result==2){
;//tips="未知错误";alert(tips);
}elseif(obj.result==3){
;//tips="参数错误";alert(tips);
}
};
//检查是否已经存在sd卡的回调函数(step:3)
uexFileMgr.cbIsFileExistByPath=function(opCode,dataType,data){
Log('uexFileMgr.cbIsFileExistByPathflag_sdcard='+flag_sdcard+',data='+data);
if(flag_sdcard==0){
if(data==0){
Log('sdcard不存在,根据具体情况处理');
}else{
//执行检查更新
uexWidget.checkUpdate();//根据config.xml里面配置的检查更新地址发起http请求
}
flag_sdcard=1;
}
};
//获取平台版本回调函数,确定是客户端是那个平台的客户端(step:2)
uexWidgetOne.cbGetPlatform=function(opId,dataType,data){
Log('uexWidgetOne.cbGetPlatform');
//获取系统版本信息回调函数
platform=data;
Log('platform='+platform);
if(data==0){
//是iphone
uexWidget.checkUpdate();//直接调用检查更新,检查更新地址在config.xml里面有配置
}elseif(data==1){
//是android
flag_sdcard=0;
uexFileMgr.isFileExistByPath('/sdcard/');//先判断是否存在sd卡,再调用checkUpdate来进行更新
}else{
//是平台
}
};
uexWidgetOne.getPlatform();//获取平台版本(step:1)
}
functionLog(s){
uexLog.sendLog(s);
}
functiongetVersionContent(){
varurl=web_url+"version.php";
uexXmlHttpMgr.onData=getvSuccess;
uexXmlHttpMgr.open(777,"get",url,"");
uexXmlHttpMgr.send(777);
}
functiongetvSuccess(opid,status,result){
if(status==-1){
uexWindow.toast("0","5","连接不上网络^_^哦","3000");
}
if(status==1){
uexXmlHttpMgr.close(777);
uexWindow.closeToast();
if(result=="[]"){uexWindow.toast("0","5","无","2000");}
else{
varcon=eval('('+result+')')
varvalue="稍后;更新";
varmycars=value.split(";");
uexWindow.confirm(con.vtitle,con.vcontent,mycars);//弹出提示框,是否确定更新
}
}
}
最后app的config.xml文件配置更新地址填写为:
http://www.i2ty.com/update.php>http://www.i2ty.com/update.php<\/a>
APP端更新提示:
弹窗内容根据version.php文件内容可以自定义。
以上内容就是本文讲解使用Appcan客户端自动更新PHP版本号的方法,希望对大家有所帮助。