阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 3231阅读
  • 0回复

[云安全技术和产品专区 ]游戏盾SDK接入指南的介绍

级别: 论坛粉丝
发帖
2050
云币
4117
b'Km-'MtH  
概述 EX#AJ>?V(  
v*%52_   
!F.h+&^D;  
通过本文,您可以了解到如何使用游戏盾产品的SDK,接入游戏盾。 !-%XrU8o3  
[backcolor=transparent]典型接入场景 Q<gUu^rq  
e~d=e3mBp  
A\#z<h[>  
集成准备 %D5F7wB  
.ws86stFSb  
  1. I2Imb9k~B  
    获取appKey。集成游戏盾SDK之前,首先需要在阿里游戏盾管理控制台中添加新应用,获得appKey。 D <R_eK  
  2. 8g Z)c\  
    下载SDK并解压缩。 t"Ah]sD  
1GqSY|FSGp  
gn&Zt}@[  
接入说明 j[.nk  
v?Utz~lQ  
K/K-u  
在游戏盾管理控制台页面,下载对应版本的SDK文件后,进行SDK接入。  *} ?  
q=Vh"]0g  
Unity3D SDK接入 k5Fj "U  
O1S7t)ag  
  1. 打开unity3d,编辑游戏脚本。
  2. p4*L}Q  
    打开MonoDevelop,在类文件定义部分定义SDK外部方法 ALSDK_GetNextIPByGroupName。 =/`]lY&  
  3. "r* `*1  
    定义SDK方法外部引入。 F"UI=7:o  
    DllImport("__Internal")]private static extern long ALSDK_GetNextIPByGroupName(string gName);
  4. X-(4/T+v  
    在工程启动函数中,调用函数 ALSDK_GetNextIPByGroupName。调用参数为 fighterServers.GameName.aliyunID.AliYunCeng.com,调用参数即为分组的ID。 J=k=cFUX  
  5. N9-7YQ`D  
    函数返回的即为配置在 fighterServers.GameName.aliyunID.AliYunCeng.com 分组中分配的游戏盾IP。
  6. E6Z kO/  
    保存后对项目工程进行编译,编译为 Xcode 工程文件。 `;J`O02  
  7. \~"Ub"~I  
    将SDK文件中的 AISDK.framework 文件拖动到工程中,直接进行编译及运行。 ;RRw-|/Wm  
  8. T7^;!;i`X  
    在console里查看编译结果。 f&mi nBU  
    vg1J N"S[  
    1.152.55.120就是客户端连接游戏盾获取当前可用的IP地址。
brs`R#e \  
WFh.oe8  
Window SDK接入 ?5J#  
YrB-n  
| @$I<  
游戏盾提供三种形式的Windows平台SDK:
  • 嵌入式SDK
  • 代理式SDK(非独立进程形式)
  • 代理式SDK(独立进程形式)
eqsmv [  
这三种形式的SDK分别满足不同的需求。 >ItT269G  
^n(FO,8c  
嵌入式SDK fg3Jv*  
t15{>>f4>  
M{{kO@P"9  
嵌入式SDK在形式上表现为一个动态链接库,共包含三个文件:YunCeng.h YunCeng-WINDOWS.dll YunCeng-WINDOWS_dll.a。宿主应用程序运行的时候,加载SDK,在连接宿主应用程序的服务前,调用SDK接口,获取group id对应的next IP,然后使用获取到的next IP完成所有的通讯。 t`+A;%=K]  
[backcolor=transparent]Code demo bo/9k 4N3  
BB\GrD  
[backcolor=transparent]编译链接方法
  • 编译时不需要特殊选项。
  • 链接时,需要链接 YunCeng-WINDOWS_dll.a 库。
fy4zBI@  
OyF=G^w  
代理式SDK(非独立进程形式) &h I!mo  
!>n!Q*\(Ov  
O573AA  
被宿主应用初始化之后,SDK在后台启动若干代理线程,代理宿主应用和其服务器之间的通信,宿主应用只需连接本地端口即可,游戏盾的IP获取逻辑对宿主应用透明。 t]@>kAA>2L  
SDK在形式上表现为动态链接库,共包含 YunCeng-Agent.dll YunCeng-Agent.h YunCeng-Agent_dll.a YunCeng-WINDOWS.dll 这四个文件。YunCeng-Agent.dll 运行时依赖 YunCeng-WINDOWS.dll。 ZBK0`7#&EH  
[backcolor=transparent]Code demo {pIh/0  
i[IFD]Xy!j  
[backcolor=transparent]编译链接方法
  • 编译时不需要特殊选项。
  • 链接时,需要链接 YunCeng-Agent_dll.a 库。
jez0 A  
XGR2L DR  
代理式SDK(独立进程形式) jRU: un4  
Rz g;GH  
jJ$B^Y"4  
启动一个独立进程,代理应用程序和服务器之间的通信,游戏盾的IP获取逻辑对应用程序透明,代理表项通过配置文件传递给SDK。 B_Q{B|eEt&  
代理式SDK(独立进程形式)由三个文件组成,YunCeng-Agent-daemon.exe, YunCeng-Agent.dll, YunCeng-WINDOWS.dll,其中exe文件的运行依赖另外两个动态库。 V;xPZ2C;  
配置文件使用ini文件格式,示例如下。 Sk cK>i.[  
@6>Q&G Yqt  
进程启动示例如下: tr[}F7n9  
AAlc %d/9  
hbH~Ya=+S  
Android SDK接入 S3ooG14Ls  
@)6b  
  1. >] 'oN  
    初始化。调用其它接口前,需要调用此函数进行初始化。[backcolor=transparent]函数说明: S > ~f.   
    [backcolor=transparent][font=微软雅黑, &amp][backcolor=transparent]int YunCeng.init(String appKey) | 6JKB'  
    • 参数appKey为集成准备中获取的appKey。
    • 返回值0表示成功,其它返回值说明参见附录:返回值定义。
  • LBCH7@V1yR  
    获取nextIP。 建议您先在游戏盾管理控制台上建立分组及分组使用IP列表。通过此函数动态地返回可访问的IP地址。[backcolor=transparent]函数说明: P);s0Y|@H  
    [backcolor=transparent][font=微软雅黑, &amp][backcolor=transparent]String YunCeng.getNextIpByGroupName(String groupName) UrizZ 5a  
    • 参数groupName为控制台上配置的分组名。
    • 返回值为对应的可访问的IP地址。
  • >,{s Fc  
    0w3c8s.  
    IOS SDK接入 5p[}<I{  
    0vm>*M*p  
    iAu/ t  
    [backcolor=transparent]运行环境
    • iOS 5.1及以上系统版本
    • 3G、4G或Wi-Fi网络
    b?i+nh qI  
    [backcolor=transparent]前期准备 Xkhd"Axi  
    在使用SDK前,需要先将SDK添加到应用的工程中,步骤如下:
    1. 将SDK压缩包解压缩,得到 YunCeng.framework。
    2. 使用XCode打开应用工程,将 YunCeng.framework 从 Finder 中拖到应用工程的Project Navigator 中。
    Bdt6 w(`^  
    [backcolor=transparent]SDK接入
    1. x950,`zy  
      初始化。在请求动态IP之前,应用需要调用SDK的初始化函数,初始化函数的原型如下: ^el+ej/=  
      /! @brief 初始化int YunCeng_Init(const char app_key);@param app_key@return YC_CODE/ PR.3EL  
      [backcolor=transparent]注意:参数app_key是在游戏盾管理控制台申请的appKey。app_key如果被泄露,可能会被攻击者用来伪造应用请求从游戏盾控制中心获得动态IP,对应用的后端服务器发起DDOS攻击。建议将 app_key 保存在keychain中。
    2. >o?v[:u*  
      请求动态IP。在初始化完成之后,应用可以通过下面的函数向游戏盾控制中心请求一个动态IP。 [P`e @$  
      /! @brief 获取动态IP地址int YunCeng_GetNextIPByGroupName(const char group_name, char ip);@param group_name@param ip 出参,动态IP地址@return YC_CODE/
      • 参数group_name是在云盾控制台创建的分组名称。
      • 参数ip是输出参数,在函数执行成功之后保存动态IP地址。
      • 7EE{*}?0E  
        返回值说明参见附录:返回值定义。 DO*U7V02  
        使用样例: f$xXR$mjf  
        char ip[16];int ret = YunCeng_GetNextIPByGroupName("group1", ip);
    'ztOl`I5V  
    \FVfV`x  
    附录 =9jK\ T^  
    ,/{e%J  
    ^z{szy?Fg  
    ~(^P(  
    返回值定义 ,0W^"f.g{m  
    ^?VQ$o2  
    [tr=rgb(239, 251, 255)][td]0
    返回值定义
    成功
    1000-1999网络通信错误
    2000-2999appkey及初始化错误
    3000-3999游戏盾控制中心错误
    4000-4999与游戏盾控制中心数据交换错误
    9000-9999SDK自身错误
    Jbu2y'zE  
    如果问题未能解决,请联系售后技术支持 @(,1}3s  
    [ 此帖被燕儿199606在2017-10-20 11:45重新编辑 ]
    发表主题 回复主题
    « 返回列表上一主题下一主题

    限100 字节
    如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
     
    验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
    上一个 下一个
        ×
        全新阿里云开发者社区, 去探索开发者的新世界吧!
        一站式的体验,更多的精彩!
        通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)