Liveness(生体認証セルフィー)
生体認証による活体検証を組み込んだセルフィーキャプチャ。SDK は SmartFrames を通じて生体的に有効なフレームが取得されるまでユーザーをガイドし、画像を Base64 + JWT として返します。
このキャプチャタイプは Liveness 機能を使用します。Liveness の仕組みの概念的な概要については、Liveness 機能ページを参照してください。
プラグインは基盤となるネイティブ SDK に処理を委譲します:
- プラグインは SmartFrame オーバーレイとともにカメラ(Android または iOS)を開きます。
- ネイティブ SDK はユーザーが顔をフレーム内に配置するようガイドします。
- 活体を検証します — セッションはユーザーが物理的に存在している場合にのみ完了します。
- プラットフォームチャンネルを通じて
base64とencrypted(JWT)を含むResultCameraオブジェクトを返します。
SDK はデフォルトでインテリジェントフレーミングと自動キャプチャが有効になっています。ビルダーでカメラモードを次のように設定します:
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
上記のメソッドの false/true の値はキャプチャエクスペリエンスを変更しません。SDK の内部ロジックにのみ使用されます。
ステップ 1 — UnicoListener を実装する
UnicoListener は SDK ライフサイクルコールバックを処理します。4 つの必須メソッドを実装してください:
| メソッド | 呼び出されるタイミング |
|---|---|
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() {}
}
上記 4 つのリスナーメソッドはすべてプロジェクト内に作成する必要があります(ロジックがなくても同様です)。作成しない場合、プロジェクトは正常にコンパイルされません。
ステップ 2 — UnicoSelfie にセルフィーリスナーを実装する
セルフィーのコールバックをステートクラスに追加します:
| メソッド | 説明 |
|---|---|
onSuccessSelfie(ResultCamera result) | キャプチャ成功 — base64(プレビュー)と encrypted(API 用 JWT)を含む ResultCamera を返す |
onErrorSelfie(UnicoError error) | キャプチャ失敗 — コードと説明を含む UnicoError を返す |
encrypted を生成してから API に送信するまでの間隔は 10 分 を超えてはなりません。
class _MyHomePageState extends State<MyHomePage>
implements UnicoSelfie {
@override
void onSuccessSelfie(ResultCamera result) { }
@override
void onErrorSelfie(UnicoError error) { }
}
ステップ 3 — openCameraSelfie を呼び出す
openCameraSelfie メソッドはカメラを開きます。UnicoSelfie リスナーの実装と、前のステップで生成された認証情報を含む JSON ファイルを引数として受け取ります:
_opener.openCameraSelfie(
jsonFileName: androidJsonFileName,
listener: this,
);
openCameraSelfie メソッドは、ユーザーセッションとフローの識別を支援するために UnicoCheckPrepareInfo 経由でメタデータを受け取るオーバーロードを提供します:
externalUserId(String、必須)— システム内のユーザー識別子。送信前に SHA-256 を使用して自動的にハッシュ化されます。useCase(String、任意)— 現在実行中のコンテキストまたはフローの識別子。平文で送信されます。
_opener.openCameraSelfie(
jsonFileName: androidJsonFileName,
listener: this,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // optional
),
);
結果処理の詳細については、結果を受け取る を参照してください。