Android

概述与资源

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

deepkonw 为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础,

如果只需求无感知判断的用户部署此SDK即可。如果需求行为验证服务,部署完成此SDK后,还需部署验证UI相关构件,请参考sensebot-部署参考

环境需求

条目 资源
开发目标 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')
  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"

组装数据

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

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

事件发生

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

//其中的第一个参数为具体的所要填充的内容,第二个参数为回调。
DPAPI.getInstance(getApplicationContext()).emitSenseData(judgementBean,judgementListener);

接口实现

实现接口进行校验。

private DPJudgementListener judgementListener = new DPJudgementListener() {

@Override
public void onError(String errorCode, String error) {
//整个流程中的错误回调,errorCode为错误码,error为具体的错误原因
}

@Override
public void onDeepKnowResult(JSONObject result) {
//deepknow的回调
}
};

输入参数实现

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

参数说明

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

混淆规则

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

日志打印

SDK提供部分日志。

ErrorCode

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

及时查看极验输出日志