跳转到主要内容

活体检测(生物特征自拍)

内嵌活体验证的生物特征自拍采集。SDK 通过 SmartFrames 引导用户,直到获取生物特征有效帧,并以 Base64 + JWT 形式返回图像。

能力

此采集类型使用 Liveness 能力。关于 Liveness 工作原理的概念性概述,请参阅 Liveness 能力页面。

工作原理

插件委托给底层原生 SDK:

  1. 插件使用 SmartFrame 遮罩打开相机(Android 或 iOS)。
  2. 原生 SDK 引导用户将面部置于取景框内。
  3. 验证活体 — 仅当用户实际在场时会话才会完成。
  4. 通过平台通道返回包含 base64encrypted(JWT)的 ResultCamera 对象。
相机模式(智能拍摄)

SDK 默认启用智能取景自动拍摄。在构建器中按如下方式配置相机模式:

UnicoCheckCameraOpener _opener = _unicoCheck
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
开始活体采集
步骤 1 — 实现 UnicoListener

UnicoListener 处理 SDK 生命周期回调。实现以下四个必须方法:

方法调用时机
onErrorUnico(error)SDK 运行过程中发生错误
onUserClosedCameraManually()用户手动关闭相机
onSystemClosedCameraTimeoutSession()达到 40 秒会话限制
onSystemChangedTypeCameraTimeoutFaceInference()13 秒内未检测到人脸 — 切换为手动拍摄
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;

@override
void onErrorUnico(UnicoError error) {}

@override
void onUserClosedCameraManually() {}

@override
void onSystemClosedCameraTimeoutSession() {}

@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
必须实现的监听器方法

上述四个监听器方法必须在您的项目中创建(即使没有任何逻辑)。否则,项目将无法成功编译。

步骤 2 — 在 UnicoSelfie 上实现自拍监听器

在您的状态类中添加自拍回调:

方法描述
onSuccessSelfie(ResultCamera result)拍摄成功 — 返回含 base64(预览)和 encrypted(API 用 JWT)的 ResultCamera
onErrorSelfie(UnicoError error)拍摄失败 — 返回包含代码和描述的 UnicoError
Token 过期

生成 encrypted 与将其提交到 API 之间的间隔不得超过 10 分钟

@override
void onSuccessSelfie(ResultCamera result) { }

@override
void onErrorSelfie(UnicoError error) { }
步骤 3 — 调用 openCameraSelfie

openCameraSelfie 方法用于打开相机。它接受 UnicoSelfie 监听器的实现:

_opener.openCameraSelfie(listener: this);
监控数据收集

openCameraSelfie 方法提供一个重载,接受通过 UnicoCheckPrepareInfo 传入的元数据,以协助识别用户会话和流程:

  • externalUserId(String,必填)— 您系统中的用户标识符。传输前自动使用 SHA-256 进行哈希处理。
  • useCase(String,可选)— 当前运行的上下文或流程的标识符。以明文形式传输。
_opener.openCameraSelfie(
listener: this,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);

完整的结果处理说明,请参阅接收结果