45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:Appcan客户端如何自动更新PHP版本号?

Appcan客户端如何自动更新PHP版本号?

2015-08-19 08:22:56 来源:www.45fan.com 【

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 "<?xml version=\"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 "<?xml version=\"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
<?xml version="1.0" encoding="utf-8" ?>
<root desc="Login">
 <news version="00.00.0001" iphone_filename="i2ty.ipa" android_filename="i2ty.apk" />
</root>
index.html 客户端:
PHP
window.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 + "<br>文件名:" + obj.name + "<br>文件大小:" +
      // obj.size + "<br>版本号:" + 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 + "<br>文件名:" + obj.name + "<br>文件大小:" +
      //obj.size + "<br>版本号:" + 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) {
      // 是iphone
      uexWidget.checkUpdate();// 直接调用检查更新,检查更新地址在config.xml里面有配置
    } else if (data == 1) {
      // 是android
      flag_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 文件配置更新地址填写为:

http://www.i2ty.com/update.php

APP端更新提示:

Appcan客户端如何自动更新PHP版本号?

弹窗内容根据 version.php 文件内容可以自定义。

以上内容就是本文讲解使用Appcan客户端自动更新PHP版本号的方法,希望对大家有所帮助。


本文地址:http://www.45fan.com/bcdm/18162.html
Tags: 更新 客户端 Appcan
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部