> >

概述与资源

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

环境需求

条目 资源
开发目标 4.0以上
开发环境 Android Studio 3.0.1
系统依赖 v7包,design包
sdk三方依赖

安装

获取SDK

点击下载demo及sdk

导入SDK到项目工程并配置开发环境

  1. 在demo的libs包下,将获取的.aar文件拖拽到工程中的libs文件夹下。

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

    repositories {
    flatDir {
    dirs 'libs'
    }
    }

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

    compile(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
    compile(name: 'geetest_sensebot_android_vx.y.z', ext: 'aar')
  3. 添加权限

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
  4. Android studio 版本大于 3.0,工程 app 中的 build.gradle 文件需要添加下述设置

    packagingOptions{
    doNotStrip "*/*/libdeepknow-lib.so"
    }
  1. AS原生 proguard 混淆会导致打 release 包失败?

    此问题与 android studio 版本无关,是由于高版本的 gradle 插件导致的。在 gradle 插件使用 3.2.0 以上,如不开启 R8 混淆器则会产生此问题,导致此问题的原因应该是加固使用的 asm 修改的 class 格式与新版 d8 编译器兼容性导致的。

    解决方式:在使用新版 gradle 插件(插件版本 3.2.0 以上)时,同时开启 R8 混淆器做混淆处理,或者使用低版本的 gradle 插件版本(3.1.0 以下)也可编译通过。

    R8普通模式是兼容 Proguard 的,若原项目里已使用了 proguard,在 gradle.properties 文件里加上 android.enableR8=true 即可。

    同时,R8也有完全模式,与 Proguard 不直接兼容,可以在 gradle.properties 文件中设置 android.enableR8.fullMode=true 即可。

代码示例

初始化与校验

初始化

在项目的在Application的 onCreate 方法里面进行初始化(第二个参数传 null 即可)。

DPAPI.getInstance(this,null);

并且在 AndroidManifest 文件中声明这个 Application

android:name=".MyApplication"

在调用验证地方的 onCreate 方法里面初始化

SEAPI seapi = new SEAPI(this);

组装数据

在执行点击操作之前,对具体的控件进行操作:

// 其中的第一个参数为具体的view,第二个参数为使用的activity的名字。
DPAPI.getInstance(getApplicationContext()).ignoreDPView(btn,"activityName");

事件发生

在执行事件的时候,执行:

// 其中的第一个参数为具体的所要填充的内容,第二个参数为回调。
seapi.onVerify(judgementBean,baseSEListener);

接口实现

实现接口进行校验。

private BaseSEListener baseSEListener = new BaseSEListener() {

/**
* SDK内部show loading dialog
*/
@Override
public void onShowDialog() {
Log.i(TAG,"onShowDialog-->SDK show loading dialog!");
}

@Override
public void onError(String errorCode, String error) {
Log.i(TAG,"onError-->errorCode:"+errorCode+", error: "+error);
Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show();
}

/**
* 验证码Dialog关闭
* 1:webview的叉按钮关闭
* 2:点击屏幕外关闭
* 3:点击回退键关闭
*
* @param num
*/
@Override
public void onCloseDialog(int num) {
Log.i(TAG, "onCloseDialog-->" + num);
}

/**
* show 验证码webview
*/
@Override
public void onDialogReady() {
Log.i(TAG,"onDialogReady-->SDK show captcha webview dialog! ");
}

/**
* 验证成功
* @param token
*/
@Override
public void onResult(String token) {
Log.i(TAG,"onResult: "+token);
}
};

输入参数实现

DPJudgementBean judgementBean=new DPJudgementBean(gtId,interactive,attr);

参数说明

参数 类型 说明
gtId String deepknow id
interactive int 交互场景类型
attr Map 冗余参数

全局事件发生

在全局执行事件的时候,执行:

// 其中的参数为回调。
DPAPI.getInstance(getApplicationContext()).setDpListener(dpListener);

全局接口实现

实现接口进行校验。

private DpListener dpListener = new DpListener() {

/**
* 全局的回调
*/
@Override
public void onResult(String token) {

}

页面关闭

在页面关闭调用此方法

@Override
protected void onDestroy() {
super.onDestroy();
seapi.destroy();
}

混淆规则

-dontwarn com.geetest.deepknow.**
-keep class com.geetest.deepknow.** {
*;
}
-dontwarn com.geetest.mobinfo.**
-keep class com.geetest.mobinfo.** {
*;
}
-dontwarn com.geetest.sensebot.**
-keep class com.geetest.sensebot.** {
*;
}
-dontwarn com.bangcle.andJni.**
-keep class com.bangcle.andJni.** {
*;
}

日志打印

SDK提供部分日志。

ErrorCode

geeguard errorcode

ErrorCode Description
20001 具体的JudgementBean为null
20002 传入的参数id为null
20003 传入的参数idValue为null
20004 Judgement接口返回值为null
20005 Judgement接口返回值格式错误
20006 Judgement接口请求错误

sensebot errorcode

ErrorCode Description
10200 传入参数错误
10201 webview加载错误
10202 deepknow内部错误
10203 SE内部错误
10204 webview加载超时
10205 webview内部错误
10206 产品类型错误

及时查看极验输出日志

概述与资源

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

环境需求

条目 资源
开发目标 4.0以上
开发环境 Android Studio 3.0.1
系统依赖 v7包,design包
sdk三方依赖

安装

获取SDK

点击下载demo及sdk

导入SDK到项目工程并配置开发环境

  1. 在demo的libs包下,将获取的.aar文件拖拽到工程中的libs文件夹下。

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

    repositories {
    flatDir {
    dirs 'libs'
    }
    }

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

    compile(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
    compile(name: 'geetest_sensebot_android_vx.y.z', ext: 'aar')
  3. 添加权限

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
  4. Android studio 版本大于 3.0,工程 app 中的 build.gradle 文件需要添加下述设置

    packagingOptions{
    doNotStrip "*/*/libdeepknow-lib.so"
    }
  1. AS原生 proguard 混淆会导致打 release 包失败?

    此问题与 android studio 版本无关,是由于高版本的 gradle 插件导致的。在 gradle 插件使用 3.2.0 以上,如不开启 R8 混淆器则会产生此问题,导致此问题的原因应该是加固使用的 asm 修改的 class 格式与新版 d8 编译器兼容性导致的。

    解决方式:在使用新版 gradle 插件(插件版本 3.2.0 以上)时,同时开启 R8 混淆器做混淆处理,或者使用低版本的 gradle 插件版本(3.1.0 以下)也可编译通过。

    R8普通模式是兼容 Proguard 的,若原项目里已使用了 proguard,在 gradle.properties 文件里加上 android.enableR8=true 即可。

    同时,R8也有完全模式,与 Proguard 不直接兼容,可以在 gradle.properties 文件中设置 android.enableR8.fullMode=true 即可。

代码示例

初始化与校验

初始化

在项目的在Application的 onCreate 方法里面进行初始化(第二个参数传 null 即可)。

DPAPI.getInstance(this,null);

并且在 AndroidManifest 文件中声明这个 Application

android:name=".MyApplication"

在调用验证地方的 onCreate 方法里面初始化

SEAPI seapi = new SEAPI(this);

组装数据

在执行点击操作之前,对具体的控件进行操作:

// 其中的第一个参数为具体的view,第二个参数为使用的activity的名字。
DPAPI.getInstance(getApplicationContext()).ignoreDPView(btn,"activityName");

事件发生

在执行事件的时候,执行:

// 其中的第一个参数为具体的所要填充的内容,第二个参数为回调。
seapi.onVerify(judgementBean,baseSEListener);

接口实现

实现接口进行校验。

private BaseSEListener baseSEListener = new BaseSEListener() {

/**
* SDK内部show loading dialog
*/
@Override
public void onShowDialog() {
Log.i(TAG,"onShowDialog-->SDK show loading dialog!");
}

@Override
public void onError(String errorCode, String error) {
Log.i(TAG,"onError-->errorCode:"+errorCode+", error: "+error);
Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show();
}

/**
* 验证码Dialog关闭
* 1:webview的叉按钮关闭
* 2:点击屏幕外关闭
* 3:点击回退键关闭
*
* @param num
*/
@Override
public void onCloseDialog(int num) {
Log.i(TAG, "onCloseDialog-->" + num);
}

/**
* show 验证码webview
*/
@Override
public void onDialogReady() {
Log.i(TAG,"onDialogReady-->SDK show captcha webview dialog! ");
}

/**
* 验证成功
* @param token
*/
@Override
public void onResult(String token) {
Log.i(TAG,"onResult: "+token);
}
};

输入参数实现

DPJudgementBean judgementBean=new DPJudgementBean(gtId,interactive,attr);

参数说明

参数 类型 说明
gtId String deepknow id
interactive int 交互场景类型
attr Map 冗余参数

全局事件发生

在全局执行事件的时候,执行:

// 其中的参数为回调。
DPAPI.getInstance(getApplicationContext()).setDpListener(dpListener);

全局接口实现

实现接口进行校验。

private DpListener dpListener = new DpListener() {

/**
* 全局的回调
*/
@Override
public void onResult(String token) {

}

页面关闭

在页面关闭调用此方法

@Override
protected void onDestroy() {
super.onDestroy();
seapi.destroy();
}

混淆规则

-dontwarn com.geetest.deepknow.**
-keep class com.geetest.deepknow.** {
*;
}
-dontwarn com.geetest.mobinfo.**
-keep class com.geetest.mobinfo.** {
*;
}
-dontwarn com.geetest.sensebot.**
-keep class com.geetest.sensebot.** {
*;
}
-dontwarn com.bangcle.andJni.**
-keep class com.bangcle.andJni.** {
*;
}

日志打印

SDK提供部分日志。

ErrorCode

geeguard errorcode

ErrorCode Description
20001 具体的JudgementBean为null
20002 传入的参数id为null
20003 传入的参数idValue为null
20004 Judgement接口返回值为null
20005 Judgement接口返回值格式错误
20006 Judgement接口请求错误

sensebot errorcode

ErrorCode Description
10200 传入参数错误
10201 webview加载错误
10202 deepknow内部错误
10203 SE内部错误
10204 webview加载超时
10205 webview内部错误
10206 产品类型错误

及时查看极验输出日志