接入 NetGuard SDK
NetGuard SDK 支持常见客户端操作系统,当前页面提供了全部的接入方法
下载 NetGuard SDK
- 开发者需要先点这里,下载 NetGuard 的 SDK
- 在开始接入前,开发者需要在管理后台,获取专属的 AppID 和 AppKey
- 根据自身需要,为不同平台的客户端 App接入 NetGuard 的 SDK
不同系统的接入方法
Microsoft Windows
NetGuard SDK 的 Windows 版包含 Shield.exe 和 libshield.dll 两个文件。其中 libshield.dll 导出了一个名为_Init 的函数,此函数遵守 C 调用约定(__cdecl)。开发者可以用如下两种不同的办法接入:
零代码接入
这种方式适合没有太多编程基础的开发者。只需要编写配置文件,并把配置文件和 Shield.exe 及 libshield.dll 放到一起,然后运行 Shield.exe 就可以了。配置文件的名称必须是 Shield.ini,它的内容如下:
ini
[Shield]
AppID = DEVELOPEMENT_APP_ID
; DEVELOPEMENT_APP_ID需要替换为开发者自己的AppID
动态库接入
这种方式适合有 Windows 编程基础的开发者。如果你想确保在 NetGuard 初始化成功后再运行别的业务逻辑,推荐使用此方式。下面的代码演示了如何在 C/C++代码中进行接入:
c
/* 建议在单独的进程中加载这个动态链接库
* 如果直接加载到App进程内,可能导致App
* 崩溃或无法连接到服务器
*/
// 1. 声明SDK里面的函数
extern "C" {
typedef int (*InitFunc)(char *, char *);
}
// 2. 恰当的时机加载动态链接库,并进行初始化
HMODULE hMod = LoadLibrary("libshield.dll");
if (!hMod)
return; // 没有找到libshield.dll
InitFunc init = (InitFunc)GetProcAddress(hMod, "Init");
if (!init)
return; // 没有找到_Init函数
// DEVELOPEMENT_APP_ID需要替换为开发者自己的AppID
if (init(NULL, "DEVELOPEMENT_APP_ID"))
return; // 返回值不为零代表初始化失败
// 返回值为零则代表初始化成功
Google Android
NetGuard SDK 的 Android 版本只有一个 AAR 文件,请将其放到 App 主工程的 libs 目录下(一般是 app/libs)
- App 级别的 build.gradle 增加如下项目,注意不要重复添加
groovy
android {
sourceSets.main {
jniLibs.srcDirs = ['libs']
}
}
dependencies {
implementation files('libs/libshield.aar')
}
- 在首个 Activity 或 Application 类里进行初始化
java
// DEVELOPEMENT_APP_ID需要替换为开发者自己的AppID
int iRet = Shield.Init(null, "DEVELOPEMENT_APP_ID");
// 返回值为零代表初始化成功
Apple iOS/iPadOS
NetGuard SDK 的 iOS 版同时支持 iPadOS,它包含有如下两个文件:
- 头文件:Shield.h
- 静态链接库:libshield.a
下面的代码演示了如何在 Objective-C 代码中加载并初始化 NetGuard 的步骤:
objective-c
// 1. 先在iOS的项目中添加libshield.a,否则编译将会失败
// 2. 包含头文件
#import "Shield.h"
// 3. 在恰当的时机进行初始化
Shield *s = [Shield getInstance];
// DEVELOPEMENT_APP_ID需要替换为开发者自己的AppID
NSInteger iRet = [s Init:nil key:@"DEVELOPEMENT_APP_ID"];
// 返回零则代表初始化成功
如果初始化失败
下表列举了初始化函数常见的返回值,请参考。
返回值 | 含义 |
---|---|
0 | 初始化成功 |
1 | AppID 为空 |
3 | 无法获取配置/没配规则 |
4 | 无法监听/端口冲突 |
9 | 第一个参数不为空指针 |
获取客户端真实 IP
在正常情况下,回源服务器不能获取客户端的真实 IP 地址,而只是虚拟的 IP 地址。
请点这里下载对应的插件,并安装到回源服务器,即可获取客户端的真实 IP 地址。
注意