Android-SDK-活体检测 (React Native 版本 3D)

快速体验 Demo

安装 CV-Demo.apk 到您的手机,使用测试账号进行登录。

集成 SDK 到您的工程中

  1. 根据您项目依赖的 react-native 库版本,下载对应的 SDK,下载完成解压后将liveness文件夹拷贝至android目录中,与app文件夹同级。

  2. 修改liveness目录下 build.gradle 文件,将rn的版本修改为3.4.1

  1. 修改android/settings.gradle文件如下,增加对liveness模块的引用

  2. 如果您项目的com.facebook.react:react-native库版本号大于等于0.60.0,需要在android/gradle.properties文件增加如下配置

  3. 修改android/app/build.gradle文件,增加库依赖,然后同步gradle完成 SDK 依赖配置

  4. 如果拉取 aar 失败,建议尝试如下操作

SDK 版本更新

查看版本更新说明

liveness/build.gradle中有 SDK 依赖的版本(版本记录),通过修改版本号来更新SDK:

快速入门

  1. 引入LivenessReactPackage

    • android/app目录中找到实现了 ReactApplication 的类,默认名称为 MainApplication,增加LivenessReactPackage

  2. 初始化 SDK。

    Market 的可用取值: [Indonesia, India, Philippines, Philippines2, Vietnam, Malaysia, Thailand, BPS, CentralData, Mexico, Singapore, Aksata, Pakistan, Nigeria]

  3. 设置检测超时时长

  4. 自定义返回的图像尺寸

  5. 用户绑定(强烈建议)。

    您可以通过该方法将自己的用户唯一标识传给我们,我们会根据该标识建立映射关系。当遇到问题时,方便同我们进行日志追踪。

  6. 开启遮挡检测

    遮挡检测默认是关闭状态,如需开启遮挡检测,请在初始化SDK之后调用如下方法设置

  1. 校验 license。

    license 由您的服务端调用我们 openAPI 获取,启动活体检测之前调用

  2. 启动活体检测与获取检测结果。

    每次进行活体检测成功后,会返回唯一的 livenessId 和本次检测的 600*600 像素的清晰正面照片。

    • 您需要将 livenessId 传给您的服务端,由服务端调用 openAPI 获取本次检测的分值。

    • 您可以通过 SDK 提供的方法直接获取图片,也可以由服务端调用 openAPI 获取。

      successJsonData数据结构:

      |回调参数|类型|解释| |:--:|:--:|:--:| |livenessId|String|本次活体检测图片的 id| |livenessBase64Str|String|本次活体检测采集的 base64 格式的图片(远景)| |nearImageBase64Str|String|本次活体检测采集的 base64 格式的图片(近景)| |transactionId|String|追踪本次活体检测日志的事务id| |eventId|String|通过这个字段可以与我们排查问题| |isPay|Boolean|本次活体检测调用是否收费|

  3. 国际化

    SDK 支持中文,英文,印尼文,越南语,泰国语,印地语,西班牙语 七种语言/语音,跟随手机系统语言自动切换,无需代码设置。

    若没有跟随系统语言自动切换 ,请检查手机语言设置,确保【地区】和【语言】均已切换至对应的语言。
    若仍然出现语言国际化问题,同时 app 仅支持某种语言,可以通过在android/app/build.gradle中增加如下配置,过滤掉不需要的语言

  4. 运行时权限

    • 必须权限

      本 SDK 需要如下权限,并且已经在 aar 的清单文件中做了配置。

  5. 代码混淆

    SDK 已经做好了代码混淆,无需额外增加配置。

  6. 关于Androidx

    考虑到 Androidx 与 support 包的互斥,本 SDK 的 .aar 全部是 support 包,如果您的项目是 androidX 类包,编译时遇到提示 support 包冲突错误,请将android/app/gradle.properties文件中增加下述配置,重新编译项目即可:

  7. SDK 兼容性

    • 最低 Android 版本:4.4 (API Level:19)
    • SDK 编译版本:API Level:33
    • 额外依赖的第三方库:无
    • 支持的 CPU 架构:armeabi-v7aarm64-v8a
    • SDK 包大小:1.3MB 模型文件 + 每种 CPU 架构约 1MB
    • 采集图像大小:默认采集图像分辨率 600px*600px,大小约为 300KB,支持自定义图像尺寸范围:300px~1000px

Error Code:

错误码解释解决办法
FACE_MISSING检测过程中人脸丢失/
ACTION_TIMEOUT动作超时/
MULTIPLE_FACE检测过程中出现多张人脸/
AUTH_BAD_NETWORK授权请求网络失败翻墙后重试
CHECKING_BAD_NETWORK动作结束后图像上传网络请求失败翻墙后重试
DEVICE_NOT_SUPPORT该设备不支持活体检测设备无前置摄像头或不可用
USER_GIVE_UP用户中途放弃检测/
UNDEFINED未定义的其他错误类型/
NO_RESPONSE请求网络超时1.请检查您的网络;
2.请检查是否调用了 init 方法;
3.请确认 license 检查返回的是 SUCCESS
AUTH_PARAMETER_ERROR授权请求参数错误请检查初始化方法传入的 key 是否为 SDK 的,并且确保 Market 匹配
AUTH_IAM_FAILED包名未备案在 SaaS 上自主配置(Personal Management -> ApplicationId Management)或联系我们添加
WEAK_LIGHT光线太弱/
STRONG_LIGHT光线太强/
MODEL_ERROR模型错误/
ALREADY_INIT重复加载/
NO_UPLOAD_IMAGE截取最佳上传图片失败/
AUTH_TICKET_DISABLETicket过期/
AUTH_ACCOUNT_ACCESS_DENIED拒绝访问此帐户/
...(Other server side error codes)  

FAQ

  1. NoSuchMethodError

    如果你遇到这样的错误: java.lang.NoSuchMethodError: No virtual method putArray(Ljava/lang/String;Lcom/facebook/react/bridge/WritableArray;)V in class Lcom/facebook/react/bridge/WritableNativeMap; or its super classes (declaration of 'com.facebook.react.bridge.WritableNativeMap' 请将集成方式改成如下:

    错误产生的原因是SDK使用了低版本的RN编译,集成SDK的项目使用的RN版本比较高,在编译时出现错误. 为了解决此问题,我们使用RN 0.74重新编译了一次SDK, RN官方推荐使用JDK17,过高或者过低可能都会出现其他错误,所以请确保当使用此种集成方式时你的JDK为17.