Andriod

概述与资源

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

环境需求

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

安装

获取SDK

  1. 在demo的libs包下,将获取的.aar文件拖拽到工程中的libs文件夹下。demo下载地址为:
    点击下载demo及sdk
  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_se_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. 由于SDK会依赖 appcompat-v7处理额外的控件;需要添加下面依赖( 如果项目中已引入了 v7包,可以不添加 )

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:design:25+'
  5. 若Android studio 版本大于3.0,工程app中的build.gradle文件需要添加下述设置

    packagingOptions{
    doNotStrip "*/armeabi/libdeepknow-lib.so"
    doNotStrip "*/armeabi-v7a/libdeepknow-lib.so"
    doNotStrip "*/x86/libdeepknow-lib.so"
    doNotStrip "*/arm64-v8a/libdeepknow-lib.so"
    doNotStrip "*/x86_64/libdeepknow-lib.so"
    }

代码示例

初始化与校验

初始化

在项目的在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 冗余参数

页面关闭

在页面关闭调用此方法

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

混淆规则

-dontwarn com.geetest.deepknow.**
-keep class com.geetest.deepknow.** {
*;
}
-dontwarn com.deepknow.encryption.**
-keep class com.deepknow.encryption.** {
*;
}
-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接口请求错误

se errorcode

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

及时查看极验输出日志