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

快速体验 Demo

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

集成 SDK 到您的工程中

  1. 下载SDK,下载完成解压后将liveness文件夹拷贝至android目录中,与app文件夹同级。

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

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

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

  3. 如果拉取 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. 设置 SignatureId(可选功能,若不设置此 id 或设置为空,则维持 livenessId 方式不变)

    在已知的下述情况下,AAI 生成的 livenessId 未能传达到您的服务端,这些 livenessId 的结果就会丢失。为了解决此问题,您的后端可以调用 AAI 接口生成 SignatureId 并传给 SDK。SignatureId 可用于获取活体分数,与 livenessId 具备等效的功能。

    1. 活体图片上传过程中,用户点击返回键离开页面
    2. 活体成功后,App 发生意外(如网络异常,App 异常等)未能将 livenessId 传给服务端

    请注意:SignatureId 可为空,但不可重复使用

  4. 设置检测超时时长

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

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

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

  7. 开启遮挡检测

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

  1. 校验 license。

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

  2. 设置 SignatureId(可选功能,若不设置此 id 或设置为空,则维持 livenessId 方式不变)

    在已知的下述情况下,AAI 生成的 livenessId 未能传达到您的服务端,这些 livenessId 的结果就会丢失。为了解决此问题,您的后端可以调用 AAI 接口生成 SignatureId 并传给 SDK。SignatureId 可用于获取活体分数,与 livenessId 具备等效的功能。

    1. 活体图片上传过程中,用户点击返回键离开页面
    2. 活体成功后,App 发生意外(如网络异常,App 异常等)未能将 livenessId 传给服务端

    请注意:SignatureId 可为空,但不可重复使用

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

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

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

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

      successJsonData数据结构:

      回调参数类型解释
      livenessIdString本次活体检测图片的 id
      livenessBase64StrString本次活体检测采集的 base64 格式的图片(远景)
      nearImageBase64StrString本次活体检测采集的 base64 格式的图片(近景)
      transactionIdString追踪本次活体检测日志的事务id
      eventIdString通过这个字段可以与我们排查问题
      isPayBoolean本次活体检测调用是否收费
  4. 国际化

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

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

  5. 运行时权限

    • 必须权限

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

  6. 代码混淆

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

  7. 关于Androidx

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

  8. SDK 兼容性

    • 最低 Android 版本:4.4 (API Level:19)
    • SDK 编译版本:API Level:35
    • 额外依赖的第三方库:无
    • 支持的 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)