---
title: Liveness (selfie biometrik)
description: Pengambilan selfie biometrik dengan verifikasi liveness yang tertanam, yang mengembalikan bingkai yang diambil dalam format Base64 dan JWT.
canonical: https://developer.unico.io/id/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/liveness
locale: id
generated_by: markdown-export
---

Pengambilan selfie biometrik dengan verifikasi liveness yang tertanam. SDK membimbing pengguna hingga bingkai yang valid secara biometrik diperoleh melalui SmartFrames dan mengembalikan gambar dalam format Base64 + JWT.

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

## Cara kerjanya

SDK mengelola seluruh sesi pengambilan gambar:

1. Membuka kamera dengan overlay SmartFrame.
2. Membimbing pengguna untuk memposisikan wajah mereka di dalam bingkai.
3. Memvalidasi liveness — sesi hanya selesai saat pengguna hadir secara fisik.
4. Mengembalikan objek `SelfieResult` (alias `ResultCamera`) dengan `base64` dan `encrypted` (JWT).

## Mode kamera (smart capture)

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

### Swift

  ```swift
  unicoCheck.setSmartFrame(true)
  unicoCheck.setAutoCapture(true)
  ```

### Objective-C

  ```objectivec
  [unicoCheck setSmartFrame:true];
  [unicoCheck setAutoCapture:true];
  ```

## Memulai pengambilan gambar liveness

****Langkah 2** — Implementasikan `SelfieCameraDelegate` dan `AcessoBioSelfieDelegate`**

Delegate ini menangani callback hasil pengambilan selfie:

  | Metode | Deskripsi |
  |---|---|
  | `onSuccessSelfie(result)` | Pengambilan gambar berhasil — mengembalikan `SelfieResult` dengan `base64` (pratinjau) dan `encrypted` (JWT untuk API) |
  | `onErrorSelfie(errorBio)` | Pengambilan gambar gagal — mengembalikan `ErrorBio` dengan kode dan deskripsi |

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

  ### Swift

    ```swift
    class ViewController: UIViewController, AcessoBioManagerDelegate,
      SelfieCameraDelegate, AcessoBioSelfieDelegate {

      func onSuccessSelfie(_ result: SelfieResult!) { }
      func onErrorSelfie(_ errorBio: ErrorBio!) { }
    }
    ```

### Objective-C

    ```objectivec
    // .h
    @interface ViewController: UIViewController <AcessoBioManagerDelegate,
      SelfieCameraDelegate, AcessoBioSelfieDelegate> {
      AcessoBioManager *unicoCheck;
    }

    // .m
    - (void)onSuccessSelfie:(SelfieResult *)result {
        NSLog(@"%@", result.base64);
    }

    - (void)onErrorSelfie:(ErrorBio *)errorBio { }
    ```

****Langkah 3** — Panggil `prepareSelfieCamera` dan `open`**

Panggil `prepareSelfieCamera` dengan memasukkan konfigurasi SDK. Saat kamera siap, event `onCameraReady` dipicu dengan `AcessoBioCameraOpenerDelegate` — buka kamera melalui metode `open()`:

  - `onCameraReady(cameraOpener)` — kamera siap; panggil `open(self)`.
  - `onCameraFailed(message)` — persiapan kamera gagal (`ErrorPrepare` adalah ekstensi dari `ErrorBio`).

  ### Swift

    ```swift
    @IBAction func openCamera(_ sender: Any) {
      unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
    }

    func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
      cameraOpener.open(self)
    }

    func onCameraFailed(_ message: ErrorPrepare!) { }
    ```

### Objective-C

    ```objectivec
    - (IBAction)openCamera:(UIButton *)sender {
        [[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
    }

    - (void)onCameraReady:(id)cameraOpener {
        [cameraOpener open:self];
    }

    - (void)onCameraFailed:(ErrorPrepare *)message { }
    ```

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