메인 콘텐츠로 건너뛰기

라이브니스 (생체 인식 셀피)

임베디드 라이브니스 검증을 포함한 생체 인식 셀피 캡처. SDK는 SmartFrames를 통해 생체 인식적으로 유효한 프레임을 얻을 때까지 사용자를 안내하고 이미지를 Base64 + JWT로 반환합니다.

기능

이 캡처 유형은 라이브니스 기능을 사용합니다. 라이브니스 작동 방식에 대한 개념적 개요는 라이브니스 기능 페이지를 참조하세요.

작동 방식

플러그인은 기반 네이티브 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 반환
토큰 만료

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
),
);

전체 결과 처리에 대해서는 결과 수신을 참조하세요.