ClientDownload和ClientUpdate共享渠道配置信息:
channel-0.php //以appstore的渠道为例
1 <?php 2 define(\'APPNAME\', \'TOKENAPPNAME\');//应用版本号 3 define(\'SERVER_MAJOR_VERSION\', \'TOKENMAJORVER\');//最新应用版本号 4 define(\'SERVER_MAJOR_VERSION_TXT\', \'TOKENMAJORTXT\');//最新应用版本描述 5 define(\'SERVER_RESOURCE_VERSION\', \' TOKENRESOURCE_VER \');//最新资源版本号 6 define(\'SERVER_IOS_URL\', \'http://version.mygame.com/TOKENMAJORVER/major/app.ipa\');//ipa下载 7 define(\'SERVER_ITMS_URL\', \'\'itms-services://?action=download-manifest&url=https://raw.githubusercontent.com/****-http.plist\');//浏览器直接安装ipa 8 define(\'SERVER_APPSTORE_URL\', \' http://itunes.apple.com/gb/app/yin/idxxxxxxxx\');//去appstore安装 9 define(\'SERVER_ANDROID_URL\', \'http://version.mygame.com/TOKENMAJORVER/major/app.apk\');//apk下载 10 define(\'SERVER_DOWNLOAD_URL\', \'http://version.mygame.com/TOKENMAJORVERSION/minor/fullres.zip\');//资源整包下载 11 define(\'SERVER_APP_MD5\', \'TOKENRESOURCE_MD5\');//资源包MD5 12 define(\'SERVER_RESOURCE_BASE_PATH\',’http://version.mygame.com/TOKENMAJORVERSION/minor/fullres/\');//资源散文件 13 define(\'SERVER_RESOURCE_DIFF_PATH\', \' http://version.mygame.com/TOKENMAJORVERSION/minor/diff/\');//资源差异文件目录 14 ?>
其他渠道的配置文件,结构一致
ClientDownload配置:
index.php
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 </head> 5 <body> 6 <?php 7 /*Usage:index.php?channelid=1*/ 8 $channelid = $_GET[\'channelid\']; //渠道 9 if (!isset($channelid)) { 10 echo \'fk with no appver\'; 11 return; 12 } 13 14 $channelfile = "channel-".$channelid.".php"; 15 if (!file_exists($channelfile)) { 16 echo "fk with no appver"; //渠道不存在 17 return; 18 } 19 20 require($channelfile); 21 ?> 22 23 <table align=\'center\'> 24 <tr> 25 <?php 26 echo "<tr><td align=\'center\'><a href=\'".constant(\'SERVER_ANDROID_URL\')."\'>下载".constant(\'APPNAME\').constant(\'SERVER_MAJOR_VERSION_TXT\')."Android版本</a></td></tr>"; 27 echo "<tr><td align=\'center\'><a href=\'".constant(\'SERVER_IOS_URL\')."\'>下载".constant(\'APPNAME\').constant(\'SERVER_MAJOR_VERSION_TXT\')."IPA版本</a></td></tr>"; 28 echo "<tr><td align=\'center\'><a href=\'".constant(\'SERVER_ITMS_URL\')."\'>点我直接安装".constant(\'APPNAME\').constant(\'SERVER_MAJOR_VERSION_TXT\')."</a></td></tr>"; 29 echo "<tr><td align=\'center\'><a href=\'".constant(\'SERVER_APPSTORE_URL\')."\'>去APPSTORE安装".constant(\'APPNAME\').constant(\'SERVER_MAJOR_VERSION_TXT\')."</a></td></tr>"; 30 ?> 31 </tr> 32 </table> 33 </body> 34 </html>
ClientUpdate配置:
check.php
1 <?php 2 /* 3 Usage: 4 check.php?channelid=1&appver=2&resver=3 5 返回值描述 6 1.客户端程序版本小于服务器程序版本,需要去appstore更新 7 2.资源版本为0,第一次进入游戏时的版本[SERVER_MAJOR_VERSION SERVER_RESOURCE_VERSION SERVER_APP_MD5 SERVER_DOWNLOAD_URL SERVER_RESOURCE_BASE_PATH] 8 3.资源版本大于0,但是小于服务器资源版本[SERVER_RESOURCE_VERSION MD5(PACKFILE) PACKFILE_URL SERVER_RESOURCE_BASE_PATH] 9 4.资源版本大于0,并且跟服务器资源版本匹配 10 错误 404 11 */ 12 13 $channelid = $$_GET["appver"]; //渠道 14 if (!isset($channelid)) { 15 16 echo "fk with no appver"; 17 18 return; 19 20 } 21 22 $channelfile = "channel-" . $channelid . ".php"; 23 if (!file_exists($channelfile)) { 24 25 echo "fk with no appver"; //渠道不存在 26 return; 27 } 28 29 require($channelfile); 30 $appver = $_GET["appver"]; //客户端程序版本 31 if (!isset($appver)) { 32 echo "fk with no appver"; 33 return; 34 } 35 36 //客户端程序版本号不可能小于0 37 if ($appver <= 0) { 38 echo "fk with no appver"; 39 return; 40 } 41 42 //客户端资源版本 43 $resver = $_GET["resver"]; 44 if (!isset($resver)) { 45 echo "fk with no resver"; 46 return; 47 } 48 49 //客户端资源版本号不可能小于0 50 if ($resver < 0) { 51 echo "fk with no resver"; 52 return; 53 } 54 55 $SERVER_MAJOR_VERSION = constant(\'SERVER_MAJOR_VERSION\'); 56 $SERVER_MAJOR_VERSION_TXT = constant(\'SERVER_MAJOR_VERSION_TXT\'); 57 $SERVER_RESOURCE_VERSION = constant(\'SERVER_RESOURCE_VERSION\'); 58 $SERVER_DOWNLOAD_URL = constant(\'SERVER_DOWNLOAD_URL\'); 59 $SERVER_APP_MD5 = constant(\'SERVER_APP_MD5\'); 60 $SERVER_RESOURCE_BASE_PATH = constant(\'SERVER_RESOURCE_BASE_PATH\'); 61 $SERVER_RESOURCE_DIFF_PATH = constant(\'SERVER_RESOURCE_DIFF_PATH\'); 62 if ($appver < $SERVER_MAJOR_VERSION) { 63 $echo \'1\'.\';\'.$SERVER_MAJOR_VERSION_TXT; 64 return; 65 66 } 67 68 if ($resver == 0) { 69 echo \'2;\'.$SERVER_RESOURCE_VERSION.\';\'.$SERVER_APP_MD5.\';\'.$SERVER_DOWNLOAD_URL.\';\'.$SERVER_RESOURCE_BASE_PATH; 70 return; 71 } 72 73 if ($resver >= $SERVER_RESOURCE_VERSION) { 74 echo \'4\'; 75 return; 76 } 77 78 $filename = \'minor/\'.$SERVER_RESOURCE_VERSION.\'/\'.$resver.\'.zip\'; 79 $url = $SERVER_RESOURCE_DIFF_PATH.$SERVER_RESOURCE_VERSION.\'/\'.$resver.\'.zip\'; 80 $file_md5 = md5_file($filename); 81 if ($file_md5 == FALSE) { 82 echo \'404\'; 83 return; 84 } 85 86 echo \'3;\'.$SERVER_RESOURCE_VERSION.\';\'.$file_md5.\';\'.$url.\';\'.= $SERVER_RESOURCE_BASE_PATH; 87 ?>
【原创】我所理解的自动更新-概要
【原创】我所理解的自动更新-环境搭建和协议制定
【原创】我所理解的自动更新-外网web服务器配置
【原创】我所理解的自动更新-APP发布与后台发布
【原创】我所理解的自动更新-资源打包流程
【原创】我所理解的自动更新-客户端更新流程
【原创】我所理解的自动更新-知识点讲解