---
title: Perjalanan Pengguna
canonical: https://developer.unico.io/id/dual-api/developers/sdks-and-tools/android/capture-flow/capture-types/user-journeys
locale: id
generated_by: markdown-export
---

User Journeys adalah sesi pengambilan gambar multi-langkah yang diatur oleh SDK bersama dengan alur yang dikonfigurasi. Misalnya, alur dengan Deteksi Kehidupan + Skor Risiko + Pengambilan Dokumen + Tanda Tangan Elektronik menjalankan selfie, pengambilan dokumen, dan tanda tangan dalam satu sesi.

:::secondary[Produk]
Journey yang tersedia bergantung pada alur yang dikonfigurasi untuk integrasi Anda. Lihat [Produk](/products) untuk pemetaan lengkap produk → alur → kemampuan.
:::

## Cara kerjanya

SDK:

1. Membaca konfigurasi alur yang disediakan selama inisialisasi.
2. Mengatur urutan pengambilan gambar yang diperlukan untuk alur (selfie, dokumen, tanda tangan).
3. Mengembalikan `processId` melalui `onSuccess` ketika journey selesai. Untuk langkah selfie, data gambar (`base64` / `encrypted`) juga dikembalikan melalui `onSuccessSelfie`. Pengambilan gambar dokumen dan tanda tangan diproses secara internal oleh SDK — tidak ada artefak per langkah yang diekspos ke klien.

Orkestrasi sepenuhnya ditangani oleh SDK — Anda tidak perlu mengimplementasikan urutan langkah di aplikasi Anda.

## Memulai User Journey

****Langkah 2** — Implementasikan `iAcessoBioSelfie`**

`iAcessoBioSelfie` menangani callback hasil pengambilan gambar pada journey:

  | Metode | Deskripsi |
  |---|---|
  | `onSuccessSelfie(result)` | Gambar berhasil diambil — mengembalikan `ResultCamera` untuk panggilan REST API selanjutnya |
  | `onSuccess(result)` | Journey berhasil diselesaikan — mengembalikan `SuccessResult` dengan `processId` yang digunakan untuk mengkueri hasil validasi |
  | `onErrorSelfie(errorBio)` | Pengambilan gambar gagal — mengembalikan `ErrorBio` dengan detail kesalahan |

  ### Kotlin

    ```kotlin
    val cameraListener: iAcessoBioSelfie = object : iAcessoBioSelfie {
      override fun onSuccessSelfie(result: ResultCamera?) { }
      override fun onSuccess(result: SuccessResult) { }
      override fun onErrorSelfie(errorBio: ErrorBio?) { }
    }
    ```

### Java

    ```java
    iAcessoBioSelfie cameraListener = new iAcessoBioSelfie() {
      @Override
      public void onSuccessSelfie(ResultCamera result) { }

      @Override
      public void onSuccess(SuccessResult result) { }

      @Override
      public void onErrorSelfie(ErrorBio errorBio) { }
    };
    ```

****Langkah 3** — Panggil `prepareCamera`**

Dengan `unicoCheckCamera` yang telah diinisialisasi dan kedua listener diimplementasikan, panggil `prepareCamera` dengan meneruskan konfigurasi SDK, sebuah `CameraListener`, dan `webAppToken` Anda:

  :::note[webAppToken]
  `webAppToken` adalah field `process.webAppToken` yang dikembalikan oleh `POST /client/v1/process` saat membuat proses di backend Anda. Lihat [Buat Proses](/dual-api/developers/api-reference/web-sdk/post-process).
  :::

  - `onCameraReady` — kamera siap; panggil `open` dengan meneruskan `cameraListener` dan `webAppToken` Anda.
  - `onCameraFailed` — persiapan kamera gagal; tangani pesan kesalahannya.

  ### Kotlin

    ```kotlin
    unicoCheckCamera.prepareCamera(unicoConfig, object : CameraListener {
      override fun onCameraReady(cameraOpener: UnicoCheckCameraOpener.Camera?) {
        cameraOpener?.open(cameraListener, "your_web_app_token")
      }

      override fun onCameraFailed(message: String?) {
        Log.e(TAG, message)
      }
    })
    ```

### Java

    ```java
    unicoCheckCamera.prepareCamera(unicoConfig, new CameraListener() {
      @Override
      public void onCameraReady(UnicoCheckCameraOpener.Camera cameraOpener) {
        cameraOpener.open(cameraListener, "your_web_app_token");
      }

      @Override
      public void onCameraFailed(String message) {
        Log.e(TAG, message);
      }
    });
    ```

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