概述
通过本文,您可以了解到如何使用游戏盾产品的SDK,接入游戏盾。
[backcolor=transparent]典型接入场景
集成准备
获取appKey。集成游戏盾SDK之前,首先需要在阿里云游戏盾管理控制台中添加新应用,获得appKey。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500971860339/Fid_215-215_1352261515287890_08296580342eee0.png)
下载SDK并解压缩。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500971955547/Fid_215-215_1352261515287890_43f76b4cb509eb7.png)
接入说明
在游戏盾管理控制台页面,下载对应版本的SDK文件后,进行SDK接入。
Unity3D SDK接入
- 打开unity3d,编辑游戏脚本。
打开MonoDevelop,在类文件定义部分定义SDK外部方法 ALSDK_GetNextIPByGroupName。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500972217006/Fid_215-215_1352261515287890_83e2e5eb43ecd97.png)
定义SDK方法外部引入。
DllImport("__Internal")]private static extern long ALSDK_GetNextIPByGroupName(string gName);
在工程启动函数中,调用函数 ALSDK_GetNextIPByGroupName。调用参数为 fighterServers.GameName.aliyunID.AliYunCeng.com,调用参数即为分组的ID。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500972472955/Fid_215-215_1352261515287890_b44c871fa1a15ba.png)
函数返回的即为配置在 fighterServers.GameName.aliyunID.AliYunCeng.com 分组中分配的游戏盾IP。
保存后对项目工程进行编译,编译为 Xcode 工程文件。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500972682066/Fid_215-215_1352261515287890_a47e3ec9fc758f4.png)
将SDK文件中的 AISDK.framework 文件拖动到工程中,直接进行编译及运行。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500972765627/Fid_215-215_1352261515287890_0113418b80e2113.png)
在console里查看编译结果。
![](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/42346/cn_zh/1500972863822/Fid_215-215_1352261515287890_3f193f8bf6f1e4c.png)
1.152.55.120就是客户端连接游戏盾获取当前可用的IP地址。
Window SDK接入
游戏盾提供三种形式的Windows平台SDK:
- 嵌入式SDK
- 代理式SDK(非独立进程形式)
- 代理式SDK(独立进程形式)
这三种形式的SDK分别满足不同的需求。
嵌入式SDK
嵌入式SDK在形式上表现为一个动态链接库,共包含三个文件:YunCeng.h YunCeng-WINDOWS.dll YunCeng-WINDOWS_dll.a。宿主应用程序运行的时候,加载SDK,在连接宿主应用程序的服务器前,调用SDK接口,获取group id对应的next IP,然后使用获取到的next IP完成所有的通讯。
[backcolor=transparent]Code demo
[backcolor=transparent]编译链接方法
- 编译时不需要特殊选项。
- 链接时,需要链接 YunCeng-WINDOWS_dll.a 库。
代理式SDK(非独立进程形式)
被宿主应用初始化之后,SDK在后台启动若干代理线程,代理宿主应用和其服务器之间的通信,宿主应用只需连接本地端口即可,游戏盾的IP获取逻辑对宿主应用透明。
SDK在形式上表现为动态链接库,共包含 YunCeng-Agent.dll YunCeng-Agent.h YunCeng-Agent_dll.a YunCeng-WINDOWS.dll 这四个文件。YunCeng-Agent.dll 运行时依赖 YunCeng-WINDOWS.dll。
[backcolor=transparent]Code demo
[backcolor=transparent]编译链接方法
- 编译时不需要特殊选项。
- 链接时,需要链接 YunCeng-Agent_dll.a 库。
代理式SDK(独立进程形式)
启动一个独立进程,代理应用程序和服务器之间的通信,游戏盾的IP获取逻辑对应用程序透明,代理表项通过配置文件传递给SDK。
代理式SDK(独立进程形式)由三个文件组成,YunCeng-Agent-daemon.exe, YunCeng-Agent.dll, YunCeng-WINDOWS.dll,其中exe文件的运行依赖另外两个动态库。
配置文件使用ini文件格式,示例如下。
进程启动示例如下:
Android SDK接入
初始化。调用其它接口前,需要调用此函数进行初始化。[backcolor=transparent]函数说明:
[backcolor=transparent][font=微软雅黑, &][backcolor=transparent]int YunCeng.init(String appKey)
- 参数appKey为集成准备中获取的appKey。
- 返回值0表示成功,其它返回值说明参见附录:返回值定义。
获取nextIP。 建议您先在游戏盾管理控制台上建立分组及分组使用IP列表。通过此函数动态地返回可访问的IP地址。[backcolor=transparent]函数说明:
[backcolor=transparent][font=微软雅黑, &][backcolor=transparent]String YunCeng.getNextIpByGroupName(String groupName)
- 参数groupName为控制台上配置的分组名。
- 返回值为对应的可访问的IP地址。
IOS SDK接入
[backcolor=transparent]运行环境
- iOS 5.1及以上系统版本
- 3G、4G或Wi-Fi网络
[backcolor=transparent]前期准备
在使用SDK前,需要先将SDK添加到应用的工程中,步骤如下:
- 将SDK压缩包解压缩,得到 YunCeng.framework。
- 使用XCode打开应用工程,将 YunCeng.framework 从 Finder 中拖到应用工程的Project Navigator 中。
[backcolor=transparent]SDK接入
初始化。在请求动态IP之前,应用需要调用SDK的初始化函数,初始化函数的原型如下:
/! @brief 初始化int YunCeng_Init(const char app_key);@param app_key@return YC_CODE/
[backcolor=transparent]注意:参数app_key是在游戏盾管理控制台申请的appKey。app_key如果被泄露,可能会被攻击者用来伪造应用请求从游戏盾控制中心获得动态IP,对应用的后端服务器发起DDOS攻击。建议将 app_key 保存在keychain中。
请求动态IP。在初始化完成之后,应用可以通过下面的函数向游戏盾控制中心请求一个动态IP。
/! @brief 获取动态IP地址int YunCeng_GetNextIPByGroupName(const char group_name, char ip);@param group_name@param ip 出参,动态IP地址@return YC_CODE/
- 参数group_name是在云盾控制台创建的分组名称。
- 参数ip是输出参数,在函数执行成功之后保存动态IP地址。
返回值说明参见附录:返回值定义。
使用样例:
char ip[16];int ret = YunCeng_GetNextIPByGroupName("group1", ip);
附录
返回值定义
[tr=rgb(239, 251, 255)][td]0
成功 |
1000-1999 | 网络通信错误 |
2000-2999 | appkey及初始化错误 |
3000-3999 | 游戏盾控制中心错误 |
4000-4999 | 与游戏盾控制中心数据交换错误 |
9000-9999 | SDK自身错误 |
如果问题未能解决,请联系
售后技术支持。