Bläddra i källkod

添加检查更新的独立请求页面.

gwang 5 år sedan
förälder
incheckning
7165bd8bb3

+ 7 - 2
Gameserver/Amfphp/base/ErrCode.php

@@ -56,15 +56,20 @@ class ErrCode {
     const err_outtime = 1021;
 
     /**
-     * 客户端版本过低-
+     * 客户端版本过低-整包
      */
     const clientversionlow_err = 1031;
 
     /**
-     * 客户端版本过低-非强
+     * 客户端版本过低-增量
      */
     const clientnewversion_msg = 1032;
 
+    /**
+     * 客户端打印信息并且退出
+     */
+    const clientPrintMsg_Halt = 1033;
+
     /**
      * 功能码非法
      */

+ 115 - 0
Gameserver/Amfphp/service_call/InquireApi/CheckUpdate.php

@@ -0,0 +1,115 @@
+<?php
+
+/* * **************************************************
+ * 此代码为员工在公司工作期间创作.
+ * 使用权和所有权归属于公司和员工共有.
+ * 收益的权利归属于公司.
+ *         ——石家庄龙游科技有限公司
+ * ************************************************** */
+
+namespace loyalsoft;
+
+include_once __DIR__ . '/../../main.php';
+
+class UpdateRetInfo {
+
+    public $err = 0;
+    public $msg = "";
+    public $newVer = "";
+
+    /**
+     * @var  \sm_clientVersionHistory  版本信息
+     */
+    public $versionInfo = null;
+
+}
+
+/**
+ * 检查更新
+ * @author gwang
+ * @version 1.0.0 Created by wanggangzero at 2020.4.27 13:48:33.
+ */
+class CheckUpdate {
+
+    /**
+     * 打印消息并且停止游戏
+     */
+    const HaltWithMsg = false;
+    const CDN_Root = "http://115.159.121.129/SweepAllTower/CDN/";
+    const Md5_file = "Update";
+
+    /**
+     * 检查客户端版本是否需要强制更新
+     * @param Req $req
+     * @return int ErrCode
+     */
+    public static function Check() {
+        $clientVer = self::GetClientVersion();                                  # 客户端版本号
+        $platform = self::GetClientPlatform();                                  # 客户端平台(安卓/IOS)
+
+        $url = self::CDN_Root . self::Md5_file . $platform . "json";            # 资源文件MD5列表
+        $lisJson = HttpUtil::makeRequest($url, array(), array(), array(), "get"); # 取CDN上版本列表
+        $fileList = JsonUtil::decode($lisJson);
+        $newVer = $fileList->Version;                                           # 取出最新版本号
+
+        $ret = new UpdateRetInfo();                                             # 返回值
+        $ret->versionInfo = GameConfig::clientVersionHistory_getItem($newVer);
+        $ret->newVer = $newVer;
+        $ret->cdn = self::CDN_Root;
+
+        if (($newVer - $clientVer) > 10) {                                      # 版本号差异大于10=>整包更
+            $ret->err = ErrCode::clientversionlow_err;                          # 返回错误码,强制更新1
+            $ret->msg = "客户端有更新-整包更";
+        } else if (($newVer - $clientVer) > 0) { #                              # 修订版本号不一致, 提示更新
+            $ret->err = ErrCode::clientnewversion_msg;
+            $ret->msg = "客户端有更新-差分更";
+        } elseif (self::HaltWithMsg) {                                          # 显示消息并且退出游戏 
+            $ret->msg = "sorry";
+            $ret->err = ErrCode::clientPrintMsg_Halt;
+        }
+
+        $ret->err = ErrCode::ok;                                                # 平安无事
+        return $ret;                                                            # 返回
+    }
+
+    /**
+     * 读取参数中的客户端版本
+     * @return int
+     */
+    static function GetClientVersion() {
+        $valueMap = HttpUtil::getQueryParas(); // array
+        var_dump($valueMap);
+        if (!is_array($valueMap)) {
+            exit("无参数");
+        }
+        $clientVer = "";
+        var_dump($clientVer);
+        if (isset($valueMap["clientVer"])) {
+            $clientVer = urldecode($valueMap['clientVer']);
+        } else {
+            exit("缺少参数 'clientVer'!");
+        }
+        return $clientVer;
+    }
+
+    /**
+     * 读取参数中的客户端平台(Android/IOS)
+     * @return string
+     */
+    static function GetClientPlatform() {
+        $valueMap = HttpUtil::getQueryParas(); // array
+        if (!is_array($valueMap)) {
+            exit("无参数");
+        }
+        $plat = "";
+        if (isset($valueMap["plat"])) {
+            $plat = urldecode($valueMap['plat']);
+        } else {
+            exit("缺少参数 'plat'!");
+        }
+        return $plat;
+    }
+
+}
+
+echo(JsonUtil::encode(CheckUpdate::Check()));                                   # 打印json给客户端

+ 3 - 0
Gameserver/Amfphp/test.php

@@ -16,6 +16,9 @@ class ABC extends HashSaver {
     public function __construct($args) {
         parent::__construct($args);
 //        $this->LoadFrom(array('name' => "wanggangzero"));
+        $url = "http://115.159.121.129/SweepAllTower/CDN/hi.txt";
+        $newVer = HttpUtil::makeRequest($url, array(), array(), array(), "get"); # 取CDN上版本列表
+        $this->name = $newVer;
     }
 
 }