在项目开发过程中遇到app端自动更新,查阅了相关资料然后把appcan客户端自动更新php版本号的方法整理出来,有需要的小伙伴可以来参考下
在项目开发过程中遇到app端自动更新,查阅了相关资料然后把appcan客户端自动更新php版本号的方法整理出来,具体代码讲解如下。
服务端文件:update.php、version.php、version.xml
update.php 内容:
php
news['iphone_filename']; //iphone下载文件$android_filename=$info->news['android_filename']; //androiad下载文件$version=$info->news['version']; //版本号if ($version>$oldver){ switch ($platform) {case 0://iphoneecho ;echo ;echo i2ty;//客户端名字echo itunesurl;//返回给客户端的下载地址echo 0;//文件大小echo .$version.;//版本信息echo ;break;case 1://androidecho ;echo ;echo i2ty;//客户端名字echo .$android_filename.;//返回给客户端的下载地址echo 0;//文件大小echo .$version.;//版本信息echo ;break; }}?>
version.php 内容:
php
version.xml 内容:phpindex.html 客户端:phpwindow.uexonload = function(type){if (!type) {update();}var flag_sdcard = 1;var updateurl = '';//下载新apk文件地址var filepath2 = /sdcard/;//保存到sd卡var filename = '';//新版本文件名var platform = '';//平台版本function update(){//安卓版 ,显示下载进度 (step:7)uexdownloadermgr.onstatus = function(opid, filesize, percent, status) {if (status == 0) {// 下载中...log('download percent ' + percent + '%');uexwindow.toast('1', '5', '正在下载'+localstorage.app_title+'新版,请稍后。进度:' + percent + '%', '');} else if (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.cbcreatedownloader data='+data);if (data == 0) {//updateurl是通过调用cbcheckupdate回调后,放入全局变量的uexdownloadermgr.download('14', updateurl, filepath2+filename, '0');//开始下载apk文件} else if (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);//旧方法 已经不可以使用了。} else if (platform == 1) {//安卓版更新,通过创建下载对象进行下载uexdownloadermgr.createdownloader(14);} else {;}}};//调用检查更新回调函数,,请求成功后,弹出模态框让用户选择是否现在更新(step:4)uexwidget.cbcheckupdate = function(opcode, datatype, jsondata) {log('jsondata='+jsondata);var obj = eval('(' + jsondata + ')');if (obj.result == 0) {// tips = 更新地址是: + obj.url +
文件名: + obj.name +
文件大小: +// obj.size +
版本号: + obj.version;updateurl = obj.url;filename = obj.name+.apk;getversioncontent();// var value = 稍后;更新;// var mycars = value.split(;);// uexwindow.confirm('', '当前有新版本,是否更新?', mycars);//弹出提示框,是否确定更新} else if (obj.result == 1) {//苹果//alert(更新地址是: + obj.url +
文件名: + obj.name +
文件大小: +//obj.size +
版本号: + obj.version);// tips = 当前版本是最新的;alert(tips);} else if (obj.result == 2) {;// tips = 未知错误;alert(tips);} else if (obj.result == 3) {;// tips = 参数错误;alert(tips);}};//检查是否已经存在sd卡的回调函数(step:3)uexfilemgr.cbisfileexistbypath = function(opcode, datatype, data) {log('uexfilemgr.cbisfileexistbypath flag_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) {// 是iphoneuexwidget.checkupdate();// 直接调用检查更新,检查更新地址在config.xml里面有配置} else if (data == 1) {// 是androidflag_sdcard = 0;uexfilemgr.isfileexistbypath('/sdcard/');//先判断是否存在sd卡,再调用checkupdate来进行更新} else {// 是平台}};uexwidgetone.getplatform();//获取平台版本 (step:1)}function log(s) {uexlog.sendlog(s);}function getversioncontent(){var url = web_url+version.php;uexxmlhttpmgr.ondata = getvsuccess;uexxmlhttpmgr.open(777, get, url,);uexxmlhttpmgr.send(777); }function getvsuccess(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{var con=eval('(' + result + ')')var value = 稍后;更新;var mycars = value.split(;);uexwindow.confirm(con.vtitle, con.vcontent, mycars);//弹出提示框,是否确定更新}}}
最后app 的 config.xml 文件配置更新地址填写为:
app端更新提示:
弹窗内容根据 version.php 文件内容可以自定义。
以上内容就是本文讲解使用appcan客户端自动更新php版本号的方法,希望对大家有所帮助。