中国站
帮助中心 > 安全 > 高防IP > 常见问题 > 亿速云游戏盾SDK接入

亿速云游戏盾SDK接入

亿速云高防游戏盾SDK接入指南

对比项 打包器接入 SDK接入
接入条件 不需要源代码,无需编译 需要用户端修改部分代码
接入速度 封装软件,接入可用 根据说明几分钟搞定
接入位置 封装登陆器 不限制,只要是客户端即可
适用性 仅支持EXE,PC平台封装 全平台,移动端为主
拓展性 无法使用SDK的AP接口 更灵活的使用规则

windows 应用接入

1.接入方法

PC的SDK接入访问为DLL模式,只需要将shieldmanager.dll集成到项目并开启调用即可

2.接入示例

以下提供C++项目的接入,其他类型同理

  1. //引入windows基本库
  2. #include <windows.h>
  3. #include <iostream>
  1. //加载dll库
  2. // ---- DLL 函数指针类型 ----
  3. using FnShieldStart = char* (*)(char*);
  4. using FnShieldStop = char* (*)();
  5. using FnShieldGetState = int (*)();
  6. using FnShieldVersion = char* (*)();
  7. using FnShieldFreeString = void (*)(char*);
  8. // ---- 定义DLL结构体并增加析构方法,用来释放库占用内存
  9. struct DllGuard {
  10. HMODULE hModule = nullptr;
  11. explicit DllGuard(const char* path) {
  12. hModule = LoadLibraryA(path);
  13. if (!hModule)
  14. throw std::runtime_error(std::string("LoadLibrary failed: ") + path
  15. + " LastError=" + std::to_string(GetLastError()));
  16. std::cout << "[DLL] Loaded: " << path << "\n";
  17. }
  18. ~DllGuard() {
  19. if (hModule) {
  20. FreeLibrary(hModule);
  21. std::cout << "[DLL] Unloaded\n";
  22. }
  23. }
  24. template<typename Fn>
  25. Fn proc(const char* name) const {
  26. auto fn = reinterpret_cast<Fn>(GetProcAddress(hModule, name));
  27. if (!fn)
  28. throw std::runtime_error(std::string("GetProcAddress failed: ") + name);
  29. return fn;
  30. }
  31. };
  32. // ---- 加载 DLL ----
  33. DllGuard dll("shieldmanager.dll");
  34. auto ShieldStart = dll.proc<FnShieldStart> ("ShieldStart");
  35. auto ShieldStop = dll.proc<FnShieldStop> ("ShieldStop");
  36. auto ShieldGetState = dll.proc<FnShieldGetState> ("ShieldGetState");
  37. auto ShieldVersion = dll.proc<FnShieldVersion> ("ShieldVersion");
  38. auto ShieldFreeString = dll.proc<FnShieldFreeString>("ShieldFreeString");
  39. //定义sdk_key字符指针,根据实际gamekey复制即可
  40. const char* SDK_KEY_DEFAULT =
  41. "";
  42. std::string sdkKey = SDK_KEY_DEFAULT;
  43. //调用上面定义的shieldStart函数,将真实的sdk_key传入
  44. char* result = ShieldStart(const_cast<char*>(sdkKey.c_str()));
  45. printResult("ShieldStart", result, ShieldFreeString);//结果为1表示正常启动

Android 应用接入

接入方式

Android 的SDK接入方法为arr模式,将shieldmanager.aar集成到项目中并开启时调用即可

需要开启android的网络权限

  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  3. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

SDK接入示例

以下为Android Studio项目的示例,其他类型同理

Android Studio示例

1. 将shieldmanager.aar文件放到工程libs目录下

2. 在app级别的build.gradle中添加对libs目录的引入

  1. implementation fileTree(dir: 'libs', include: ['*.aar'])

3.执行”File/Sync Project with Gradle Files”同步配置

4.在连接远程服务器前开启游戏盾(建议在程序运行后开启),kotlin代码示例:

  1. import shieldmanager.Shieldmanager
  2. // SDK KEY
  3. private val sdkKey = "your-sdk-key"
  4. val resultEncoded = Shieldmanager.start(sdkKey)
  5. val resultJson = String(Base64.decode(resultEncoded, Base64.NO_WRAP), Charsets.UTF_8) //对结果进行base64解密
  6. val result = JSONObject(resultJson) //启动成功则返回为1
  7. val errMsg = result.optString("error", "")
  8. val data = result.optString("data", "")

5.程序结束后,关闭盾即可

  1. val resultEncoded = Shieldmanager.stop()
  2. val resultJson = String(Base64.decode(resultEncoded, Base64.NO_WRAP), Charsets.UTF_8)
  3. val result = JSONObject(resultJson)
  4. val errMsg = result.optString("error", "")

IOS 后续补充