라이브니스 (생체 인식 셀피)
임베디드 라이브니스 검증을 포함한 생체 인식 셀피 캡처. SDK는 SmartFrames를 통해 생체 인식적으로 유효한 프레임을 얻을 때까지 사용자를 안내하고 이미지를 Base64 + JWT로 반환합니다.
기능
이 캡처 유형은 라이브니스 기능을 사용합니다. 라이브니스 작동 방식에 대한 개념적 개요는 라이브니스 기능 페이지를 참조하세요.
작동 방식
플러그인은 기반 네이티브 SDK에 위임합니다:
- 플러그인이 SmartFrame 오버레이와 함께 카메라(Android 또는 iOS)를 엽니다.
- 네이티브 SDK가 사용자에게 얼굴을 프레임 내에 위치시키도록 안내합니다.
- 라이브니스를 검증합니다 — 세션은 사용자가 실제로 존재할 때만 완료됩니다.
- 플랫폼 채널을 통해
base64및encrypted(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 반환 |
토큰 만료
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
),
);
전체 결과 처리에 대해서는 결과 수신을 참조하세요.