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.
Journey yang tersedia bergantung pada alur yang dikonfigurasi untuk integrasi Anda. Lihat Kasus Penggunaan untuk pemetaan lengkap kasus penggunaan → alur → kemampuan.
Plugin mendelegasikan ke SDK native yang mendasarinya:
- Plugin membuka kamera (Android atau iOS) dengan overlay SmartFrame.
- SDK native mengorkestrasikan urutan pengambilan yang diperlukan untuk alur tersebut (selfie, dokumen, tanda tangan).
- SDK secara internal meneruskan hasil ke Unico — klien tidak pernah menerima atau mengelola data gambar secara langsung.
- Mengembalikan objek
SuccessResultdenganprocessIdmelalui platform channel.
Orkestrasi ditangani sepenuhnya oleh SDK — Anda tidak perlu mengimplementasikan urutan langkah dalam kode Dart Anda.
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();
Nilai false/true untuk metode di atas tidak mengubah pengalaman pengambilan; nilai tersebut hanya digunakan untuk logika internal SDK.
Langkah 1 — Implementasikan UnicoListener
UnicoListener menangani callback siklus hidup SDK. Implementasikan empat metode wajib berikut:
| Metode | Kapan 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() {}
}
Keempat 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:
| 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 |
Berbeda dengan alur Liveness, callback User Journey tidak mengembalikan base64 atau encrypted. Unico menangani pemrosesan gambar secara internal dan hanya mengembalikan processId.
@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:
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
);
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.