Liveness (صورة شخصية بيومترية)
التقاط صورة شخصية بيومترية مع التحقق من الحضور الجسدي المدمج. يُوجّه SDK المستخدم حتى يتم الحصول على إطار بيومتري صالح عبر SmartFrames، ثم يُعيد الصورة بتنسيق Base64 مع JWT.
يستخدم نوع الالتقاط هذا قدرة Liveness. للاطلاع على نظرة عامة مفاهيمية حول آلية عمل Liveness، راجع صفحة قدرة Liveness.
يدير SDK جلسة الالتقاط الكاملة:
- يفتح الكاميرا مع تراكب SmartFrame.
- يُوجّه المستخدم لتحديد موضع وجهه داخل الإطار.
- يتحقق من الحضور الجسدي — لا تكتمل الجلسة إلا عندما يكون المستخدم حاضراً فعلياً.
- يُعيد كائن
SelfieResult(المعرَّف أيضاً بـResultCamera) يحتوي علىbase64وencrypted(JWT).
يحتوي SDK على تأطير ذكي والتقاط تلقائي مُفعَّلَين افتراضياً. قم بتهيئة وضع الكاميرا في الـ builder الخاص بك على النحو التالي:
- Swift
- Objective-C
unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
[unicoCheck setSmartFrame:true];
[unicoCheck setAutoCapture:true];
الخطوة 1 — تنفيذ AcessoBioManagerDelegate
تتولى AcessoBioManagerDelegate معالجة استدعاءات دورة حياة SDK. نفِّذ الطرق الأربع الإلزامية:
| الطريقة | متى يتم استدعاؤها |
|---|---|
onErrorAcessoBioManager(error) | حدث خطأ أثناء تشغيل SDK |
onUserClosedCameraManually() | أغلق المستخدم الكاميرا يدوياً |
onSystemClosedCameraTimeoutSession() | تم الوصول إلى حد الجلسة البالغ 40 ثانية |
onSystemChangedTypeCameraTimeoutFaceInference() | لم يُكتشف أي وجه لمدة 13 ثانية — التبديل إلى الالتقاط اليدوي |
- 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
يجب إنشاء جميع الطرق الأربع للتفويض المذكورة أعلاه في مشروعك (حتى بدون أي منطق). وإلا، لن يُكمَّل تحويل المشروع بنجاح.
الخطوة 2 — تطبيق SelfieCameraDelegate وAcessoBioSelfieDelegate
تتعامل هذه الـ delegates مع callbacks نتيجة التقاط الصورة الشخصية:
| الدالة | الوصف |
|---|---|
onSuccessSelfie(result) | نجح الالتقاط — يُعيد SelfieResult مع base64 (معاينة) وencrypted (JWT للـ API) |
onErrorSelfie(errorBio) | فشل الالتقاط — يُعيد ErrorBio يحتوي على الكود والوصف |
يجب ألا يتجاوز الفاصل الزمني بين إنشاء encrypted وإرساله إلى الـ API 10 دقائق.
- 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 { }
الخطوة 3 — استدعاء prepareSelfieCamera وopen
استدعِ prepareSelfieCamera مع تمرير إعداد SDK. عندما تكون الكاميرا جاهزة، يتم تشغيل حدث onCameraReady مع AcessoBioCameraOpenerDelegate — افتح الكاميرا من خلال دالة open():
onCameraReady(cameraOpener)— الكاميرا جاهزة؛ استدعِopen(self).onCameraFailed(message)— فشل تحضير الكاميرا (ErrorPrepareهو امتداد لـErrorBio).
- 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 { }
توفر دالة prepareSelfieCamera تحميلاً زائداً يقبل البيانات الوصفية عبر PrepareInfo للمساعدة في تحديد جلسة المستخدم والتدفق:
externalUserId(String، مطلوب) — معرّف المستخدم داخل نظامك. يتم تجزئته تلقائياً باستخدام SHA-256 قبل الإرسال.useCase(String، اختياري) — مع رّف السياق أو التدفق الذي يتم تشغيله حالياً (مثل"account_opening"أو"password_recovery"). يُرسَل بنص عادي.
- 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];
للاطلاع على معالجة النتيجة الكاملة، راجع استقبال النتيجة.