概述与资源
Android SDK
提供给集成 Android
原生客户端开发的开发者使用。
DeepKonw
为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础
环境需求
条目 | 资源 |
---|---|
开发目标 | 4.0 以上 |
开发环境 | Android Studio 3.3.2 |
系统依赖 | 无 |
sdk 三方依赖 |
无 |
安装
获取 SDK
通过邮件获取
导入 SDK
到项目工程并配置开发环境
将获取的
.aar
文件放入工程中的libs文件夹下。检查
.aar
是否被添加到Library, 需要在项目的build.gradle
下添加如下代码:repositories {
flatDir {
dirs 'libs'
}
}手动将
aar
包添加依赖:implementation(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
添加权限
<!-- 必选-默认申请-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- 必选-6.0或以上需动态申请 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- 可选-6.0或以上需动态申请 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />混淆规则
-dontwarn com.geetest.deepknow.**
-keep class com.geetest.deepknow.** {
*;
}
-dontwarn com.geetest.mobinfo.**
-keep class com.geetest.mobinfo.** {
*;
}若
Android studio
版本大于3.0
,工程app
中的build.gradle
文件需要添加下述设置packagingOptions{
doNotStrip "*/*/libdeepknow-lib.so"
}
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
声明周期初始化。
public static DPAPI getInstance(Context context, String app_id) |
app_id
为在极验后台申请的app_id
获取 session
数据
获取 session_id
查询当前状态
DPAPI.getInstance(getApplicationContext()).getSessionStatus(dpListener); |
session_id
使用参考服务端接入文档
提交自定义数据
提交自定义数据给极验分析(定制接口,获取 session_id
请调用 getSessionStatus
接口)
DPAPI.getInstance(getApplicationContext()).submitExtraData(jsonObject, dpListener); |
注意第一层必须有
"scene"
字段标识场景id
,具体见服务端文档
DPListener
接口实现
实现接口操作返回数据
DPListener dpListener = new DPListener() { |
关闭数据库
在退出应用程序关闭数据库连接
public DPAPI closeSQL() |
日志打印
SDK
提供部分日志,TAG
为 Geetest_DeepKnow
。
ErrorCode
ErrorCode |
Description |
---|---|
21000 | Judge接口报错 |
21001 | 初始化 JSON 构造失败 |
21002 | submitExtraData 接口参数错误 |
21003 | collector接口报错 |
及时查看极验输出日志