ClientDownload和ClientUpdate共享渠道配置信息:

channel-0.php //以appstore的渠道为例

 <?php
     define('APPNAME',  'TOKENAPPNAME');//应用版本号
     define('SERVER_MAJOR_VERSION',  'TOKENMAJORVER');//最新应用版本号
     define('SERVER_MAJOR_VERSION_TXT',  'TOKENMAJORTXT');//最新应用版本描述
     define('SERVER_RESOURCE_VERSION', ' TOKENRESOURCE_VER ');//最新资源版本号
     define('SERVER_IOS_URL',  'http://version.mygame.com/TOKENMAJORVER/major/app.ipa');//ipa下载
     define('SERVER_ITMS_URL',  ''itms-services://?action=download-manifest&url=https://raw.githubusercontent.com/****-http.plist');//浏览器直接安装ipa
     define('SERVER_APPSTORE_URL',  ' http://itunes.apple.com/gb/app/yin/idxxxxxxxx');//去appstore安装
     define('SERVER_ANDROID_URL',  'http://version.mygame.com/TOKENMAJORVER/major/app.apk');//apk下载
     define('SERVER_DOWNLOAD_URL',  'http://version.mygame.com/TOKENMAJORVERSION/minor/fullres.zip');//资源整包下载
     define('SERVER_APP_MD5', 'TOKENRESOURCE_MD5');//资源包MD5
     define('SERVER_RESOURCE_BASE_PATH',’http://version.mygame.com/TOKENMAJORVERSION/minor/fullres/');//资源散文件
     define('SERVER_RESOURCE_DIFF_PATH', ' http://version.mygame.com/TOKENMAJORVERSION/minor/diff/');//资源差异文件目录
 ?>

其他渠道的配置文件,结构一致

ClientDownload配置:

index.php

 <html>
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     </head>
     <body>
         <?php
             /*Usage:index.php?channelid=1*/
             $channelid = $_GET['channelid']; //渠道
             if (!isset($channelid)) {
                 echo 'fk with no appver';
                 return;
             }           

             $channelfile = "channel-".$channelid.".php";
             if (!file_exists($channelfile)) {
                 echo "fk with no appver"; //渠道不存在
                 return;
             }           

             require($channelfile);
         ?>       

         <table align='center'>
             <tr>
                 <?php
                     echo "<tr><td align='center'><a href='".constant('SERVER_ANDROID_URL')."'>下载".constant('APPNAME').constant('SERVER_MAJOR_VERSION_TXT')."Android版本</a></td></tr>";
                     echo "<tr><td align='center'><a href='".constant('SERVER_IOS_URL')."'>下载".constant('APPNAME').constant('SERVER_MAJOR_VERSION_TXT')."IPA版本</a></td></tr>";
                     echo "<tr><td align='center'><a href='".constant('SERVER_ITMS_URL')."'>点我直接安装".constant('APPNAME').constant('SERVER_MAJOR_VERSION_TXT')."</a></td></tr>";
                     echo "<tr><td align='center'><a href='".constant('SERVER_APPSTORE_URL')."'>去APPSTORE安装".constant('APPNAME').constant('SERVER_MAJOR_VERSION_TXT')."</a></td></tr>";
                 ?>
             </tr>
         </table>
     </body>
 </html>

ClientUpdate配置:

check.php

 <?php
     /*
         Usage:
             check.php?channelid=1&appver=2&resver=3
         返回值描述
             1.客户端程序版本小于服务器程序版本,需要去appstore更新
             2.资源版本为0,第一次进入游戏时的版本[SERVER_MAJOR_VERSION SERVER_RESOURCE_VERSION SERVER_APP_MD5 SERVER_DOWNLOAD_URL SERVER_RESOURCE_BASE_PATH]
             3.资源版本大于0,但是小于服务器资源版本[SERVER_RESOURCE_VERSION MD5(PACKFILE) PACKFILE_URL SERVER_RESOURCE_BASE_PATH]
             4.资源版本大于0,并且跟服务器资源版本匹配
             错误 404
      */

     $channelid = $$_GET["appver"]; //渠道
     if (!isset($channelid)) {

         echo "fk with no appver";

         return;

     }   

     $channelfile = "channel-" . $channelid . ".php";
     if (!file_exists($channelfile)) {

         echo "fk with no appver"; //渠道不存在
         return;
     }   

     require($channelfile);
     $appver = $_GET["appver"]; //客户端程序版本
     if (!isset($appver)) {
         echo "fk with no appver";
         return;
     }   

     //客户端程序版本号不可能小于0
     if ($appver <= 0) {
         echo "fk with no appver";
         return;
     }   

     //客户端资源版本
     $resver = $_GET["resver"];
     if (!isset($resver)) {
         echo "fk with no resver";
         return;
     }   

     //客户端资源版本号不可能小于0
     if ($resver < 0) {
         echo "fk with no resver";
         return;
     }   

     $SERVER_MAJOR_VERSION = constant('SERVER_MAJOR_VERSION');
     $SERVER_MAJOR_VERSION_TXT = constant('SERVER_MAJOR_VERSION_TXT');
     $SERVER_RESOURCE_VERSION = constant('SERVER_RESOURCE_VERSION');
     $SERVER_DOWNLOAD_URL = constant('SERVER_DOWNLOAD_URL');
     $SERVER_APP_MD5 = constant('SERVER_APP_MD5');
     $SERVER_RESOURCE_BASE_PATH = constant('SERVER_RESOURCE_BASE_PATH');
     $SERVER_RESOURCE_DIFF_PATH = constant('SERVER_RESOURCE_DIFF_PATH');
     if ($appver < $SERVER_MAJOR_VERSION) {
         $echo '1'.';'.$SERVER_MAJOR_VERSION_TXT;
         return;

     }

     if ($resver == 0) {
         echo '2;'.$SERVER_RESOURCE_VERSION.';'.$SERVER_APP_MD5.';'.$SERVER_DOWNLOAD_URL.';'.$SERVER_RESOURCE_BASE_PATH;
         return;
     }   

      if ($resver >= $SERVER_RESOURCE_VERSION) {
          echo '4';
          return;
      }   

     $filename = 'minor/'.$SERVER_RESOURCE_VERSION.'/'.$resver.'.zip';
     $url = $SERVER_RESOURCE_DIFF_PATH.$SERVER_RESOURCE_VERSION.'/'.$resver.'.zip';
     $file_md5 = md5_file($filename);
     if ($file_md5 == FALSE) {
         echo '404';
         return;
     }

     echo '3;'.$SERVER_RESOURCE_VERSION.';'.$file_md5.';'.$url.';'.= $SERVER_RESOURCE_BASE_PATH;
 ?>

【原创】我所理解的自动更新-概要
【原创】我所理解的自动更新-环境搭建和协议制定
【原创】我所理解的自动更新-外网web服务器配置
【原创】我所理解的自动更新-APP发布与后台发布
【原创】我所理解的自动更新-资源打包流程
【原创】我所理解的自动更新-客户端更新流程
【原创】我所理解的自动更新-知识点讲解

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

  1. 【原创】我所理解的自动更新-APP发布与后台发布

    发布后台 创建渠道:添加新的渠道,设置渠道名称,自动生成渠道id.    查看渠道:查看渠道基本信息,渠道app版本号,资源版本号,是否开启更新.    创建/更新APP:选择打包ios,androi ...

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

    首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion   ...

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

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

  4. 本地Server发布外网Web应用(Oray实现)

    主要讲解如何将本地当做服务器,发布Web应用至外网访问.   准备条件: 1.web应用服务(此处为Tomcat作为web应用服务器): 2.花生壳应用:   第一步,正常搭建本地web项目,应用名为 ...

  5. ngrok外网登录本地Web服务器

    首先在网上下载ngrok软件,然后cmd到其目录下,运行ngrok http 80即可打开服务器,然后自动生成外网连接,然后C:\inetpub\wwwroot下放置html网页,在公网即可打开

  6. jenkins外网slave配置

    背景: 客户提供了测试服务器,但不能外网直连需要通过windows跳板进行进行连接. 方案设定将windows跳板机配置为远程slave节点. 技术支持: jenkins-slave  windows ...

  7. 【原创】从零开始搭建Electron+Vue+Webpack项目框架(五)预加载和Electron自动更新

    导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(四)Electron配置润色(五)预加载及自动更 ...

  8. Hibernate中的对象状态,及自动更新原因

    Hibernate的对象有三种状态,分别为:瞬时状态 (Transient). 持久化状态(Persistent).游离状态(Detached).对它的深入理解,才能更好的理解hibernate的运行 ...

  9. fedora23没有/var/log/messages &如何禁用后台自动更新软件?

    警告!! Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃. fedora23没有/var/log/messages 不是没有messages这个文件,而是 从 fc core ...

随机推荐

  1. CSipSimple 简单分析

    简介 CSipSimple是一款可以在android手机上使用的支持sip的网络电话软件,可以在上面设置使用callda网络电话.连接使用方式最好是使用wifi,或者3g这样上网速度快,打起电话来效果 ...

  2. React独立组件间通信联动

    React是现在主流的高效的前端框架,其官方文档 http://reactjs.cn/react/docs/getting-started.html 在介绍组件间通信时只给出了父子组件间通信的方法,而 ...

  3. CNUOJ 0486 800401反质数

    难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...

  4. User interface

    Styles and Themes value/style <style name="CodeFont" parent="@android:style/TextAp ...

  5. python学习道路(day9note)(socketserver编程,ftp)

    1.ftp client #!/usr/bin/env python #_*_coding:utf-8_*_ import socket import subprocess user_data = { ...

  6. 转一个PDevMode格式属性说明...

    找不到原始来源了... //PDevMode = _devicemodeW; // _devicemodeW = record // dmDeviceName: array[0..CCHDEVICEN ...

  7. HTTPS 协议和原理

    1 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身 ...

  8. pdf拆分与合并

    1.引用iTextSharp,用于拆分和合并pdf文件 using iTextSharp.text; using iTextSharp.text.pdf; 2.合并pdf //outMergeFile ...

  9. 试解析Tomcat运行原理(一)--- socket通讯

    关于这篇文章也确实筹划了很久,今天决定开篇写第一篇,说起tomcat首先很容易联想到IIS,因为我最开始使用的就是.net技术,我第一次使用asp写学生成绩管理系统后,很茫然如何让别人都能看到或者说使 ...

  10. 【转载】LoadRunner添加windows多台压力机

    添加多台压力机 1.前置条件 1)保证压力机上都安装了loadrunner Agent,并启动,状态栏中会有小卫星. 2)添加的压力机与controller所在机器是否在同一个网段,建议关闭防火墙.在 ...