---
title: Liveness (selfie biometrik)
canonical: https://developer.unico.io/id/dual-api/developers/sdks-and-tools/flutter/capture-flow/capture-types/liveness
locale: id
generated_by: markdown-export
---

Pengambilan selfie biometrik dengan verifikasi liveness yang terintegrasi. SDK membimbing pengguna hingga mendapatkan frame yang valid secara biometrik melalui SmartFrames dan mengembalikan gambar sebagai Base64 + JWT.

:::secondary[Capability]
Jenis pengambilan ini menggunakan kemampuan **Liveness**. Untuk gambaran konseptual tentang cara kerja Liveness, lihat halaman kemampuan Liveness.
:::

## Cara kerjanya

Plugin mendelegasikan ke SDK native yang mendasarinya:

1. Plugin membuka kamera (Android atau iOS) dengan overlay SmartFrame.
2. SDK native membimbing pengguna untuk memposisikan wajah mereka di dalam bingkai.
3. Memvalidasi liveness — sesi hanya selesai ketika pengguna hadir secara fisik.
4. Mengembalikan objek `ResultCamera` dengan `base64` dan `encrypted` (JWT) melalui platform channel.

## Mode kamera (smart capture)

SDK memiliki **framing cerdas** dan **pengambilan otomatis** yang diaktifkan secara default. Konfigurasikan mode kamera di builder Anda sebagai berikut:

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

:::tip
Nilai `false`/`true` untuk metode di atas tidak mengubah pengalaman pengambilan; nilai tersebut hanya digunakan untuk logika internal SDK.
:::

## Memulai pengambilan liveness

****Langkah 2** — Implementasikan listener selfie pada `UnicoSelfie`**

Tambahkan callback selfie ke kelas state Anda:

  | Metode | Deskripsi |
  |---|---|
  | `onSuccessSelfie(ResultCamera result)` | Pengambilan berhasil — mengembalikan `ResultCamera` dengan `base64` (pratinjau) dan `encrypted` (JWT untuk API) |
  | `onErrorSelfie(UnicoError error)` | Pengambilan gagal — mengembalikan `UnicoError` dengan kode dan deskripsi |

  :::warning[Kedaluwarsa token]
  Interval antara pembuatan `encrypted` dan pengirimannya ke API tidak boleh melebihi **10 menit**.
  :::

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

    @override
    void onSuccessSelfie(ResultCamera result) { }

    @override
    void onErrorSelfie(UnicoError error) { }

  }
  ```

****Langkah 3** — Panggil `openCameraSelfie`**

Metode `openCameraSelfie` membuka kamera. Metode ini menerima implementasi listener `UnicoSelfie` dan file JSON berisi kredensial yang dihasilkan pada langkah sebelumnya:

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

## Pengumpulan data pemantauan

Metode `openCameraSelfie` menyediakan overload yang menerima metadata melalui `UnicoCheckPrepareInfo` untuk membantu mengidentifikasi sesi pengguna dan alurnya:

- `externalUserId` (String, **wajib**) — Pengenal pengguna dalam sistem Anda. Secara otomatis di-hash menggunakan SHA-256 sebelum dikirimkan.
- `useCase` (String, opsional) — Pengenal untuk konteks atau alur yang sedang berjalan. Dikirimkan dalam teks biasa.

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

Untuk penanganan hasil lengkap, lihat [Menerima hasil](/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).