> >

资源与概述

GeeGaurd Android SDK 提供给集成 Android 原生客户端开发的开发者使用。

环境要求

条目 资源
开发目标 Android 4.4+
开发环境 Android Studio 4.1
编译工具 gradle (ant 编译请解压提取 jar 和资源文件
系统依赖
SDK 三方依赖

集成

获取 SDK

请联系您的对接人。

导入 SDK

zip 包中的 .aar 文件(包括 geetest_geeguard_android_vx.y.z_date.aar拖拽到工程中的 libs 文件夹下,在拖入 .aarlibs 文件夹后,还要检查.aar是否被添加到Library,要在项目的 build.gradle 下添加如下代码:

repositories {
flatDir {
dirs 'libs'
}
}

并且要手动将aar 包添加依赖 (需要您手动添加):

implementation(name: 'geetest_geeguard_android_vx.y.z_date', ext: 'aar')

添加权限声明

<!--必选-默认申请-->
<uses-permission android:name="android.permission.INTERNET" />
<!--可选-6.0或以上需动态申请(存储日志以便分析异常)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

配置混淆规则

极验 SDK 已做混淆处理,集成时请带上混淆规则,勿再次混淆 SDK

-dontwarn com.geetest.geeguard.**
-keep class com.geetest.geeguard.**{*;}

调用逻辑

  1. 在后台注册 AppID
  2. 使用 AppID 获取 GeeGuardReceipt

集成代码参考下方的代码示例

代码示例

该示例适用于 2.3.0+ 版本

应用启动后立即注册 appID

// 您申请的 AppID
const val appId = "123456789012345678901234567890ab"

class APP : Application() {
override fun onCreate() {
super.onCreate()
GeeGuard.register(this, appId)
}
}

获取 GeeToken

使用 GeeGuard SDK 对数据进行签名,并获取环境检测 GeeToken:

// 直接获取 GeeToken,需在服务端解析结果
fun getGeeToken(context: Context) {
thread {
// 唯一标记本次业务的流水号或凭证,用于防止 GeeToken 从业务场景剥离
// 如果无防止 GeeToken 从业务场景剥离的需求,data 可以传入 null
val data = "唯一标记本次业务的流水号或凭证,用于防止 GeeToken 从业务场景剥离"

val receipt = GeeGuard.fetchReceipt(context, data)
// 由于 SDK 不方便引入 androidx.annotation, Kotlin 可能无法正确处理 SDK 返回的可空类型, 接入时请处理 GeeGuardReceipt 为空的可能性
if (receipt != null) {
// 随业务数据一同提交,请在服务端获取最终的环境识别结果及指纹
// 接口参数请参考服务端文档
Log.i("GeeToken: ${receipt.geeToken}")
} else {
Log.w("无法获取 GeeGuardReceipt,请检查是否已通过 GeeGuard.register(appId) 注册 AppID")
}
}
}

// 获取 respondedGeeToken,需在服务端解析结果
// 此方法回调为异步
fun getRespondedGeeToken(context: Context) {
thread {
val tag = "GeeGuard SubmitReceipt"
// 唯一标记本次业务的流水号或凭证,用于防止 GeeToken 从业务场景剥离
// 如果无防止 GeeToken 从业务场景剥离的需求,data 可以传入 null
val data = "唯一标记本次业务的流水号或凭证,用于防止 GeeToken 从业务场景剥离"

GeeGuard.submitReceipt(context, data) { status, receipt ->
when (status) {
// SDK 提交成功, 可以正常提交 respondedGeeToken 查询结果
200 -> Log.d(tag, receipt.respondedGeeToken)

// 仅当给 SDK 传入的 appId 或 Context 为空时会触发, 请检查传参是否有效
-200 -> Log.e(tag, "Invalid appId or Context")

// 服务器响应失败, 其中 -300 为网络错误, -500 为服务响应格式异常, -501 为服务响应失败, 详情请查看服务端原始返回信息 receipt.originalResponse
// TODO: 此时可降级使用 receipt.geeToken (geeToken 长度约为 4000, respondedGeeToken 长度约为 1000) 进行查询
-300, -500, -501 -> {
// 服务端响应 body 原文
Log.e(tag, receipt.originalResponse)
// 可以降级提交 geeToken 进行查询
Log.e(tag, receipt.geeToken)
}

// 暂无其他错误码
else -> throw IllegalStateException("Unexpected error code")
}
}
}
}

错误码清单

异步获取方法 GeeGuard.submitReceipt(Context, String, GeeGuard.CallbackHandler) 中可能返回的错误码有:

错误码 描述
-200 未注册 AppID,请在启动后注册 AppID
-300 网络错误,详细见日志中 tag 为 GeeGuard 的 stacktrace
-500 服务响应格式异常,详细请查看 receipt.originalResponse
-501 服务响应失败,详细请查看 receipt.originalResponse

可以参考获取 GeeToken 中的代码进行错误处理。

查询 GeeToken 结果

将 respondedGeeToken 或 GeeToken 跟随业务数据一起提交到业务的服务端,服务端再向极验设备指纹服务查询结果。详细见服务端文档。

更新说明

版本号 更新内容 日期
2.6.1 1. 修复部分场景下可能出现的崩溃 2024-06-18
2.6.0 1. 修复部分模拟器上出现的崩溃
2. 升级安全能力
2024-04-19
2.5.2 1. 增加带回调的 register 接口
2. 升级安全能力
2024-03-04
2.5.1 1. 修复部分模拟器上出现的崩溃
2. 升级安全能力
3. 其他已知问题的修复
2024-01-29
2.5.0 1. 修复少数机型上出现的崩溃
2. 升级安全能力
3. 其他已知问题的修复
2024-01-10
2.3.0 1. 调用接口调整 2023-08-30
2.2.2 1. 升级安全能力
2. 修复已知问题
2023-07-26
2.2.0 1. 升级安全能力 2023-04-19
2.1.1 1. 升级部分功能
2. 修复已知问题
2023-02-07
2.1.0 1. 功能升级及优化
2. 修复已知问题
2022-09-07
2.0.0 - 2022-07-25
1.5.0 - 2022-05-26