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

- [/id/](/id/)
- [SDK dan Alat](/id/developers/sdks-and-tools/overview)
- [Flutter SDK](/id/developers/sdks-and-tools/flutter/requirements)
- Alur tangkapan
- User Journeys

# User Journeys

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.

ProdukJourney yang tersedia bergantung pada alur yang dikonfigurasi untuk integrasi Anda. Lihat [Produk](/id/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:

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

Memulai User Journey
**Langkah 1** — Implementasikan `UnicoListener``UnicoListener` menangani callback siklus hidup SDK. Implementasikan empat metode wajib berikut:MetodeKapan dipanggil`onErrorUnico(error)`Terjadi kesalahan selama operasi SDK`onUserClosedCameraManually()`Pengguna menutup kamera secara manual`onSystemClosedCameraTimeoutSession()`Batas waktu sesi 40 detik telah tercapai`onSystemChangedTypeCameraTimeoutFaceInference()`Tidak ada wajah terdeteksi selama 13 detik — beralih ke pengambilan manual```
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {  late UnicoCheckBuilder _unicoCheck;  @override  void onErrorUnico(UnicoError error) {}  @override  void onUserClosedCameraManually() {}  @override  void onSystemClosedCameraTimeoutSession() {}  @override  void onSystemChangedTypeCameraTimeoutFaceInference() {}}
```

Metode listener wajibKeempat metode listener di atas harus dibuat di proyek Anda (meskipun tanpa logika apa pun). Jika tidak, proyek tidak akan berhasil dikompilasi.
**Langkah 2** — Implementasikan listener journey pada `UnicoSelfie`Tambahkan callback journey ke kelas state Anda:MetodeDeskripsi`onSuccess(SuccessResult result)`Pengambilan berhasil — mengembalikan `SuccessResult` dengan `processId` (Unico memproses gambar secara internal)`onErrorSelfie(UnicoError error)`Pengambilan gagal — mengembalikan `UnicoError` dengan kode dan deskripsiTidak ada data gambarBerbeda dengan alur Liveness, callback User Journey **tidak** mengembalikan `base64` atau `encrypted`. Unico menangani pemrosesan gambar secara internal dan hanya mengembalikan `processId`.```
@overridevoid onSuccess(SuccessResult result) {  debugPrint('processId: ${result.processId}');}@overridevoid 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:```
_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.

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

Untuk penanganan hasil lengkap, lihat [Menerima hasil](/id/developers/sdks-and-tools/flutter/capture-flow/receiving-the-result).Terakhir diperbarui pada 8 Okt 2026**