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.
Jenis pengambilan gambar ini menggunakan capability Liveness. Untuk gambaran konseptual tentang cara kerja Liveness, lihat halaman capability Liveness.
SDK mengelola seluruh sesi pengambilan gambar:
- Membuka kamera dengan overlay SmartFrame.
- Membimbing pengguna untuk memposisikan wajah mereka di dalam bingkai.
- Memvalidasi liveness — sesi hanya selesai saat pengguna hadir secara fisik.
- Mengembalikan objek
SelfieResult(aliasResultCamera) denganbase64danencrypted(JWT).
SDK memiliki pembingkaian cerdas dan pengambilan gambar otomatis yang diaktifkan secara default. Konfigurasikan mode kamera di builder Anda sebagai berikut:
- Swift
- Objective-C
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
Nilai false/true untuk metode di atas tidak mengubah pengalaman pengambilan gambar; nilai tersebut hanya digunakan untuk logika internal SDK.
Langkah 1 — Implementasikan AcessoBioManagerDelegate
AcessoBioManagerDelegate menangani callback siklus hidup SDK. Implementasikan empat metode wajib berikut:
| Metode | Kapan 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 |
- Swift
- Objective-C
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() { }
}
@implementation ViewController: UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
}
- (void)onErrorAcessoBioManager:(ErrorBio *)error { }
- (void)onSystemChangedTypeCameraTimeoutFaceInference { }
- (void)onSystemClosedCameraTimeoutSession { }
- (void)onUserClosedCameraManually { }
@end
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:
| Metode | Deskripsi |
|---|---|
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 |
Interval antara pembuatan encrypted dan pengirimannya ke API tidak boleh melebihi 10 menit.
- Swift
- Objective-C
class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {
func onSuccessSelfie(_ result: SelfieResult!) { }
func onErrorSelfie(_ errorBio: ErrorBio!) { }
}
// .h
@interface ViewController: UIViewController <AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate> {
AcessoBioManager *unicoCheck;
}
// .m
- (void)onSuccessSelfie:(SelfieResult *)result {
NSLog(@"%@", result.base64);
}
- (void)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; panggilopen(self).onCameraFailed(message)— persiapan kamera gagal (ErrorPrepareadalah ekstensi dariErrorBio).
- Swift
- Objective-C
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}
func onCameraReady(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.open(self)
}
func onCameraFailed(_ message: ErrorPrepare!) { }
- (IBAction)openCamera:(UIButton *)sender {
[[unicoCheck build] prepareSelfieCamera:self config:[YourUnicoConfigClass new]];
}
- (void)onCameraReady:(id)cameraOpener {
[cameraOpener open:self];
}
- (void)onCameraFailed:(ErrorPrepare *)message { }
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.
- Swift
- Objective-C
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)
PrepareInfo *prepareInfo = [[PrepareInfo alloc]
initWithExternalUserId:@"external_user_id" useCase:@"flow_id"];
[[unicoCheck build] prepareSelfieCamera:self
config:[YourUnicoConfigClass new]
prepareInfo:prepareInfo];
Untuk penanganan hasil secara lengkap, lihat Menerima hasil.