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发布与后台发布
【原创】我所理解的自动更新-资源打包流程
【原创】我所理解的自动更新-客户端更新流程
【原创】我所理解的自动更新-知识点讲解

转载于:https://www.cnblogs.com/ldr123/p/4378855.html

【原创】我所理解的自动更新-外网web服务器配置相关推荐

  1. K2P在DYNV6自动更新外网IP地址的脚本

    一.申请方法参考: DYNV6免费域名申请方法 但我用在K2P,版本比较老:荒野无灯的3.4.3.9-099_20181012-1309,里面的接口一是不知道怎么用,二是有可能已经失效了.故使用sh脚 ...

  2. Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)

    一.linux服务器端配置 1 2 3 4 5 6 7 8 9 [root@server ~]# rpm -qa | grep sub subversion-libs-1.7.14-10.el7.x8 ...

  3. Linux防火墙配置—访问外网WEB

    一.实验目标 1.本次实验在"Linux基础网络搭建实验"的基础上,在外网虚拟机上搭建WEB服务,并分别配置外网和网关的防火墙规则,使内网能够访问WEB服务 2.Linux基础网络 ...

  4. nginx解决内外网隔离无法访问外网web地址问题

    nginx.conf配置文件示例如下: worker_processes 1; events { worker_connections 1024; } http { include mime.type ...

  5. nginx正向代理配置,解决内外网隔离无法访问外网web地址问题

    前提: 内网电脑只能能够访问外网电脑的8086端口. 外网电脑能否访问外网地址. nginx.conf配置文件示例如下: worker_processes  1; events {     worke ...

  6. AdaptiveAvgPool2d理解(中网、外网整合)

    目录 什么是Pooling AdaptivePooling(自适应池化)和General Pooling(一般池化)的区别 AdaptivePooling的实现细节 实例 1d 2d 对自己的一些基于 ...

  7. 思科网络安全技术实现——NAPT技术实现局域网访问外网WEB服务器

    NAPT介绍: NAPT采用端口多路复用的方式.内部网络的所有主机均可共享一个合法的外部IP地址实现对Internet的访问,从而可以最大限度的节约IP地址资源.同时,又可以隐藏那个网络内部的所有主机 ...

  8. autoupdater 更新后重新运行_Windows 10 总是自动更新?这几个方法教你关闭它

    本文经少数派授权转载 微软近期会向所有的 Windows 10 用户推送 Windows 10 RS4 春季创意者 更新,带来了时间线.应用权限管理.专注模式等诸多新特性. 不过,对某些人来说,Win ...

  9. android应用程序的自动更新升级(自身升级,通过tomcat),[SaltStack] Minion-conf自动更新...

    minion-conf配置文件自动更新, 加载 minion-conf是每个minion自身以来的配置, 为了方便我们在中心管控机上(Master)统一配置, 然后下发文件, 进而使得Minion能够 ...

最新文章

  1. 博士生起诉学校,因核心期刊发文数不够申请学位被拒,一审判决胜诉!
  2. Microsoft R 和 Open Source R,哪一个才最适合你?
  3. mysql动态规划_动态规划《开篇》
  4. pyaiml聊天机器人
  5. C#与Javascript变量、函数之间的相互调用2008年11月28日 星期五 05:28 P.M.1.如何在JavaScript访问C#函数?
  6. 适配器(Adaptor)模式
  7. 大写的“极简” H3C MSG360系列网关
  8. [Python] 关键字 assert
  9. 接水果(fruit)——整体二分+扫描线
  10. 值的珍藏!三分钟了解如何用elman神经网络进行预测
  11. shell脚本操作hbase的命令
  12. 普元eos根据查询条件导出excel表格
  13. 计算机原理加法指令流程图,加法器电路设计方案汇总(八款模拟电路设计原理详解)...
  14. 结构光三维重建(二)线结构光三维重建
  15. dell 服务器引导盘安装2003
  16. 支持向量机检测DGA
  17. 《用户至上:用户研究方法与实践》用户体验入门
  18. 04.Quartz 触发器
  19. 关于一个学习计算机专业,迷茫的大一新生的看法和理解
  20. 屏保问题(即背光灯的关闭)

热门文章

  1. 使用注意力机制建模 - 标准化日期格式
  2. LeetCode 1297. 子串的最大出现次数
  3. 程序员面试金典 - 面试题 04.04. 检查平衡性(二叉树高度)
  4. LeetCode 12/13 罗马数字与整型互转(哈希,贪心)
  5. HTML试题及答案(总结)
  6. wp博客链接.html,WordPress博客文章标题链接到自定义网址链接
  7. python 时间函数 毫秒_利用python进行播放音频与录音,骚操作!
  8. python爬虫入门必备正则_python 爬虫入门之正则表达式 一
  9. pandas object转float_25个Pandas实用技巧
  10. 一文搞懂 PyTorch 内部机制