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

User Journeys adalah sesi pengambilan multi-langkah yang diorkestrasikan oleh SDK bersama dengan alur yang dikonfigurasi. Misalnya, alur `idchecktrustdocssign` menjalankan selfie + dokumen + 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

Plugin mendelegasikan ke SDK native yang mendasarinya:

1. Plugin membuka kamera (Android atau iOS) dengan overlay SmartFrame.
2. SDK native mengorkestrasikan urutan pengambilan yang diperlukan untuk alur tersebut (selfie, dokumen, tanda tangan).
3. SDK secara internal meneruskan hasil ke Unico — klien tidak pernah menerima atau mengelola data gambar secara langsung.
4. Mengembalikan objek `SuccessResult` dengan `processId` melalui platform channel.

Orkestrasi ditangani sepenuhnya oleh SDK — Anda tidak perlu mengimplementasikan urutan langkah dalam kode Dart Anda.

## 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();
```

## Memulai User Journey

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

Tambahkan callback journey ke kelas state Anda:

  | Metode | Deskripsi |
  |---|---|
  | `onSuccess(SuccessResult result)` | Pengambilan berhasil — mengembalikan `SuccessResult` dengan `processId` (Unico memproses gambar secara internal) |
  | `onErrorSelfie(UnicoError error)` | Pengambilan gagal — mengembalikan `UnicoError` dengan kode dan deskripsi |

  :::warning[Tidak ada data gambar]
  Berbeda dengan alur Liveness, callback User Journey **tidak** mengembalikan `base64` atau `encrypted`. Unico menangani pemrosesan gambar secara internal dan hanya mengembalikan `processId`.
  :::

  ```dart
  @override
  void onSuccess(SuccessResult result) {
    debugPrint('processId: ${result.processId}');
  }

  @override
  void onErrorSelfie(UnicoError error) { }
  ```

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

Metode `openCameraSelfie` membuka kamera. Untuk User Journeys, berikan `webAppToken` yang disediakan oleh Unico sebagai pengganti file JSON kredensial:

  ```dart
  _opener.openCameraSelfie(
    listener: this,
    webAppToken: token,
  );
  ```

## 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(
  listener: this,
  webAppToken: token,
  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).