概述与资源

行为验证 Android SDK 提供给集成 Android 原生客户端开发的开发者使用, SDK 不依赖任何第三方库。

环境需求

条目
开发目标 Android 4.0+
开发环境 Android Studio 2.1.3
系统依赖 v7包
sdk三方依赖
demo依赖

资源下载

条目 资源地址
产品结构流程 通讯流程, 交互流程
SDK下载链接 gt3-android-sdk
SDK接口文档 gt3-android-docs 或查看demo注释
错误码列表 Error Code 列表
Demo工程下载 示例工程

安装

获取 SDK

手动下载获取

使用从下方链接下载.zip文件获取最新的sdk。

gt3-android-sdk

导入SDK

如果你不是使用添加依赖, 将获取的.aar文件拖拽到工程中的libs文件夹下。

import

在拖入.aar到 libs 文件夹后, 还要检查.aar是否被添加到Library,要在项目的build.gradle下添加如下代码:

repositories {
flatDir {
dirs 'libs'
}
}

并且要手动将 aar 包添加依赖:

implementation(name: 'geetest_sensebot_android_vx.y.z', ext: 'aar')

libraries

配置接口

Android sdk主要提供以下接口:

  1. 配置验证初始化
  2. 启动验证
  3. 获取验证回调

参考行为验证的产品结构流程, 必须要先在您的后端搭建相应的服务端SDK,并配置从极验管理后台获取的idkey, 并且将配置的接口API1API2放入客户端的初始化方法中。

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

编译并运行你的工程

编译你的工程, 体验行为验证!

build

轻轻点击你集成的验证按钮, 如此自然, 如此传神。

视觉展示

  1. 与自定义的按钮绑定集成

    sample1

  2. 使用极验提供的按钮样式集成

    sample2

代码示例

文件配置

  1. 添加权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  2. 混淆规则

    # 极验SDK已经混淆处理,请勿再次混淆
    -dontwarn com.geetest.sdk.**
    -keep class com.geetest.sdk.**{*;}

通过与自定义按钮绑定的方式集成

  1. 注册验证会话

    务必在onCreate生命周期处理

    // 务必在oncreate方法里处理
    GT3GeetestUtils gt3GeetestUtils = new GT3GeetestUtils(this);
  1. 初始化配置参数

    可以在onCreate生命周期配置,也可在被调用配置

    // 配置bean文件,也可在oncreate初始化
    gt3ConfigBean = new GT3ConfigBean();
    // 设置验证模式,1:bind,2:unbind
    gt3ConfigBean.setPattern(1);
    // 设置点击灰色区域是否消失,默认不消息
    gt3ConfigBean.setCanceledOnTouchOutside(false);
    // 设置debug模式,开代理可调试
    gt3ConfigBean.setDebug(false);
    // 设置语言,如果为null则使用系统默认语言
    gt3ConfigBean.setLang(null);
    // 设置加载webview超时时间,单位毫秒,默认10000,仅且webview加载静态文件超时,不包括之前的http请求
    gt3ConfigBean.setTimeout(10000);
    // 设置webview请求超时(用户点选或滑动完成,前端请求后端接口),单位毫秒,默认10000
    gt3ConfigBean.setWebviewTimeout(10000);
    // 设置回调监听
    gt3ConfigBean.setListener(new GT3Listener());
    gt3GeetestUtils.init(gt3ConfigBean);
    // 开启验证
    gt3GeetestUtils.startCustomFlow();

通过极验提供的按钮集成

  1. 添加按钮控件

    <com.geetest.sdk.views.GT3GeetestButton
    android:id="@+id/btn_geetest"
    android:layout_width="290dp"
    android:layout_height="44dp"
    android:layout_centerHorizontal="true"
    android:layout_centerInParent="true"
    android:gravity="center"
    android:orientation="horizontal" />
  2. 注册验证会话

    务必在onCreate生命周期配置

    // 务必在oncreate方法里配置
    GT3GeetestButton geetestButton = (GT3GeetestButton) findViewById(R.id.btn_geetest);
    GT3GeetestUtils gt3GeetestUtils = new GT3GeetestUtils(this);
  3. 初始化配置参数

    可以在onCreate生命周期配置,也可在被调用配置

    // 配置bean文件,也可在oncreate初始化
    gt3ConfigBean = new GT3ConfigBean();
    // 设置验证模式,1:bind,2:unbind
    gt3ConfigBean.setPattern(2);
    // 设置点击灰色区域是否消失,默认不消息
    gt3ConfigBean.setCanceledOnTouchOutside(false);
    // 设置debug模式,开代理可调试
    gt3ConfigBean.setDebug(false);
    // 设置语言,参考API文档。如果为null则使用系统默认语言(TODO 若想设置语言立即生效,则init需要在setContentView之前)
    gt3ConfigBean.setLang(null);
    // 设置加载webview超时时间,单位毫秒,默认10000,仅且webview加载静态文件超时,不包括之前的http请求
    gt3ConfigBean.setTimeout(10000);
    // 设置webview请求超时(用户点选或滑动完成,前端请求后端接口),单位毫秒,默认10000
    gt3ConfigBean.setWebviewTimeout(10000);
    // 设置回调监听
    gt3ConfigBean.setListener(new GT3Listener());
    gt3GeetestUtils.init(gt3ConfigBean);
    // 绑定
    geetestButton.setGeetestUtils(gt3GeetestUtils);

处理验证回调

处理验证过程中回调数据, 需要在onButtonClick回调方法处理 API1 请求,onDialogResult回调方法处理 API2 请求,具体参考 Demo

	
gt3ConfigBean.setListener(new GT3Listener() {

/**
* api1结果回调
* @param result
*/
@Override
public void onApi1Result(String result) {
Log.e(TAG, "GT3BaseListener-->onApi1Result-->" + result);
}

/**
* 验证码加载完成
* @param duration 加载时间和版本等信息,为json格式
*/
@Override
public void onDialogReady(String duration) {
Log.e(TAG, "GT3BaseListener-->onDialogReady-->" + duration);
}

/**
* 验证结果
* @param result
*/
@Override
public void onDialogResult(String result) {
Log.e(TAG, "GT3BaseListener-->onDialogResult-->" + result);
// 开启api2逻辑
new RequestAPI2().execute(result);
}

/**
* api2回调
* @param result
*/
@Override
public void onApi2Result(String result) {
Log.e(TAG, "GT3BaseListener-->onApi2Result-->" + result);
}

/**
* 统计信息,参考接入文档
* @param result
*/
@Override
public void onStatistics(String result) {
Log.e(TAG, "GT3BaseListener-->onStatistics-->" + result);
}

/**
* 验证码被关闭
* @param num 1 点击验证码的关闭按钮来关闭验证码, 2 点击屏幕关闭验证码, 3 点击返回键关闭验证码
*/
@Override
public void onClosed(int num) {
Log.e(TAG, "GT3BaseListener-->onClosed-->" + num);
}

/**
* 验证成功回调
* @param result
*/
@Override
public void onSuccess(String result) {
Log.e(TAG, "GT3BaseListener-->onSuccess-->" + result);
}

/**
* 验证失败回调
* @param errorBean 版本号,错误码,错误描述等信息
*/
@Override
public void onFailed(GT3ErrorBean errorBean) {
Log.e(TAG, "GT3BaseListener-->onFailed-->" + errorBean.toString());
}

@Override
public void onButtonClick() {
new RequestAPI1().execute();
}

});

示例代码细节参考官方提供的 Demo