---
title: Liveness（生体認証セルフィー）
canonical: https://developer.unico.io/ja/dual-api/developers/sdks-and-tools/flutter/capture-flow/capture-types/liveness
locale: ja
generated_by: markdown-export
---

生体認証による活体検証を組み込んだセルフィーキャプチャ。SDK は SmartFrames を通じて生体的に有効なフレームが取得されるまでユーザーをガイドし、画像を Base64 + JWT として返します。

:::secondary[機能]
このキャプチャタイプは **Liveness** 機能を使用します。Liveness の仕組みの概念的な概要については、Liveness 機能ページを参照してください。
:::

## How it works

プラグインは基盤となるネイティブ SDK に処理を委譲します:

1. プラグインは SmartFrame オーバーレイとともにカメラ（Android または iOS）を開きます。
2. ネイティブ SDK はユーザーが顔をフレーム内に配置するようガイドします。
3. 活体を検証します — セッションはユーザーが物理的に存在している場合にのみ完了します。
4. プラットフォームチャンネルを通じて `base64` と `encrypted`（JWT）を含む `ResultCamera` オブジェクトを返します。

## Camera mode (smart capture)

SDK はデフォルトで**インテリジェントフレーミング**と**自動キャプチャ**が有効になっています。ビルダーでカメラモードを次のように設定します:

```dart
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
    .setAutoCapture(autoCapture: true)
    .setSmartFrame(smartFrame: true)
    .build();
```

:::tip
上記のメソッドの `false`/`true` の値はキャプチャエクスペリエンスを変更しません。SDK の内部ロジックにのみ使用されます。
:::

## Starting a liveness capture

****ステップ 2** — `UnicoSelfie` にセルフィーリスナーを実装する**

セルフィーのコールバックをステートクラスに追加します:

  | メソッド | 説明 |
  |---|---|
  | `onSuccessSelfie(ResultCamera result)` | キャプチャ成功 — `base64`（プレビュー）と `encrypted`（API 用 JWT）を含む `ResultCamera` を返す |
  | `onErrorSelfie(UnicoError error)` | キャプチャ失敗 — コードと説明を含む `UnicoError` を返す |

  :::warning[トークンの有効期限]
  `encrypted` を生成してから API に送信するまでの間隔は **10 分** を超えてはなりません。
  :::

  ```dart
  class _MyHomePageState extends State<MyHomePage>
      implements UnicoSelfie {

    @override
    void onSuccessSelfie(ResultCamera result) { }

    @override
    void onErrorSelfie(UnicoError error) { }

  }
  ```

****ステップ 3** — `openCameraSelfie` を呼び出す**

`openCameraSelfie` メソッドはカメラを開きます。`UnicoSelfie` リスナーの実装と、前のステップで生成された認証情報を含む JSON ファイルを引数として受け取ります:

  ```dart
  _opener.openCameraSelfie(
    jsonFileName: androidJsonFileName,
    listener: this,
  );
  ```

## Monitoring data collection

`openCameraSelfie` メソッドは、ユーザーセッションとフローの識別を支援するために `UnicoCheckPrepareInfo` 経由でメタデータを受け取るオーバーロードを提供します:

- `externalUserId`（String、**必須**）— システム内のユーザー識別子。送信前に SHA-256 を使用して自動的にハッシュ化されます。
- `useCase`（String、任意）— 現在実行中のコンテキストまたはフローの識別子。平文で送信されます。

```dart
_opener.openCameraSelfie(
  jsonFileName: androidJsonFileName,
  listener: this,
  prepareInfo: UnicoCheckPrepareInfo(
    externalUserId: 'external_user_id',
    useCase: 'use_case', // optional
  ),
);
```

結果処理の詳細については、[結果を受け取る](/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result) を参照してください。