Lewati ke konten utama

Liveness (selfie biometrik)

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.

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:

unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
tips

Nilai false/true untuk metode di atas tidak mengubah pengalaman pengambilan gambar; nilai tersebut hanya digunakan untuk logika internal SDK.

Memulai pengambilan gambar liveness
Langkah 1 — Implementasikan AcessoBioManagerDelegate

AcessoBioManagerDelegate menangani callback siklus hidup SDK. Implementasikan empat metode wajib berikut:

MetodeKapan dipanggil
onErrorAcessoBioManager(error)Terjadi kesalahan selama operasi SDK
onUserClosedCameraManually()Pengguna menutup kamera secara manual
onSystemClosedCameraTimeoutSession()Batas sesi 40 detik telah tercapai
onSystemChangedTypeCameraTimeoutFaceInference()Tidak ada wajah terdeteksi selama 13 detik — beralih ke pengambilan gambar manual
class ViewController: UIViewController, AcessoBioManagerDelegate {
var unicoCheck: AcessoBioManager!

override func viewDidLoad() {
super.viewDidLoad()
unicoCheck = AcessoBioManager(viewController: self)
}

func onErrorAcessoBioManager(_ error: ErrorBio!) { }
func onUserClosedCameraManually() { }
func onSystemClosedCameraTimeoutSession() { }
func onSystemChangedTypeCameraTimeoutFaceInference() { }
}
Metode delegate wajib

Keempat metode delegate di atas harus dibuat dalam proyek Anda (meskipun tanpa logika apa pun). Jika tidak, proyek tidak akan berhasil dikompilasi.

Langkah 2 — Implementasikan SelfieCameraDelegate dan AcessoBioSelfieDelegate

Delegate ini menangani callback hasil pengambilan selfie:

MetodeDeskripsi
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
Kedaluwarsa token

Interval antara pembuatan encrypted dan pengirimannya ke API tidak boleh melebihi 10 menit.

class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {

func onSuccessSelfie(_ result: SelfieResult!) { }
func 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).
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}

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

func onCameraFailed(_ message: ErrorPrepare!) { }
Pemantauan pengumpulan data

Metode prepareSelfieCamera menyediakan overload yang menerima metadata melalui PrepareInfo untuk membantu mengidentifikasi sesi pengguna dan alur yang sedang berjalan:

  • externalUserId (String, wajib) — Pengenal pengguna dalam sistem Anda. Secara otomatis di-hash menggunakan SHA-256 sebelum transmisi.
  • useCase (String, opsional) — Pengenal untuk konteks atau alur yang sedang berjalan (misalnya, "account_opening", "password_recovery"). Dikirimkan dalam teks biasa.
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)

Untuk penanganan hasil secara lengkap, lihat Menerima hasil.