الانتقال إلى المحتوى الرئيسي

Liveness (صورة شخصية بيومترية)

التقاط صورة شخصية بيومترية مع التحقق من الحضور الجسدي المدمج. يُوجّه SDK المستخدم حتى يتم الحصول على إطار بيومتري صالح عبر SmartFrames، ثم يُعيد الصورة بتنسيق Base64 مع JWT.

القدرة

يستخدم نوع الالتقاط هذا قدرة Liveness. للاطلاع على نظرة عامة مفاهيمية حول آلية عمل Liveness، راجع صفحة قدرة Liveness.

آلية العمل

يدير SDK جلسة الالتقاط الكاملة:

  1. يفتح الكاميرا مع تراكب SmartFrame.
  2. يُوجّه المستخدم لتحديد موضع وجهه داخل الإطار.
  3. يتحقق من الحضور الجسدي — لا تكتمل الجلسة إلا عندما يكون المستخدم حاضراً فعلياً.
  4. يُعيد كائن SelfieResult (المعرَّف أيضاً بـ ResultCamera) يحتوي على base64 وencrypted (JWT).
وضع الكاميرا (الالتقاط الذكي)

يحتوي SDK على تأطير ذكي والتقاط تلقائي مُفعَّلَين افتراضياً. قم بتهيئة وضع الكاميرا في الـ builder الخاص بك على النحو التالي:

unicoCheck.setSmartFrame(true)
unicoCheck.setAutoCapture(true)
بدء جلسة التقاط Liveness
الخطوة 1 — تنفيذ AcessoBioManagerDelegate

تتولى AcessoBioManagerDelegate معالجة استدعاءات دورة حياة SDK. نفِّذ الطرق الأربع الإلزامية:

الطريقةمتى يتم استدعاؤها
onErrorAcessoBioManager(error)حدث خطأ أثناء تشغيل SDK
onUserClosedCameraManually()أغلق المستخدم الكاميرا يدوياً
onSystemClosedCameraTimeoutSession()تم الوصول إلى حد الجلسة البالغ 40 ثانية
onSystemChangedTypeCameraTimeoutFaceInference()لم يُكتشف أي وجه لمدة 13 ثانية — التبديل إلى الالتقاط اليدوي
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() { }
}
طرق التفويض الإلزامية

يجب إنشاء جميع الطرق الأربع للتفويض المذكورة أعلاه في مشروعك (حتى بدون أي منطق). وإلا، لن يُكمَّل تحويل المشروع بنجاح.

الخطوة 2 — تطبيق SelfieCameraDelegate وAcessoBioSelfieDelegate

تتعامل هذه الـ delegates مع callbacks نتيجة التقاط الصورة الشخصية:

الدالةالوصف
onSuccessSelfie(result)نجح الالتقاط — يُعيد SelfieResult مع base64 (معاينة) وencrypted (JWT للـ API)
onErrorSelfie(errorBio)فشل الالتقاط — يُعيد ErrorBio يحتوي على الكود والوصف
انتهاء صلاحية الـ Token

يجب ألا يتجاوز الفاصل الزمني بين إنشاء encrypted وإرساله إلى الـ API 10 دقائق.

class ViewController: UIViewController, AcessoBioManagerDelegate,
SelfieCameraDelegate, AcessoBioSelfieDelegate {

func onSuccessSelfie(_ result: SelfieResult!) { }
func onErrorSelfie(_ errorBio: ErrorBio!) { }
}
الخطوة 3 — استدعاء prepareSelfieCamera وopen

استدعِ prepareSelfieCamera مع تمرير إعداد SDK. عندما تكون الكاميرا جاهزة، يتم تشغيل حدث onCameraReady مع AcessoBioCameraOpenerDelegate — افتح الكاميرا من خلال دالة open():

  • onCameraReady(cameraOpener) — الكاميرا جاهزة؛ استدعِ open(self).
  • onCameraFailed(message) — فشل تحضير الكاميرا (ErrorPrepare هو امتداد لـ ErrorBio).
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareSelfieCamera(self, config: YourUnicoConfigClass())
}

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

func onCameraFailed(_ message: ErrorPrepare!) { }
جمع بيانات المراقبة

توفر دالة prepareSelfieCamera تحميلاً زائداً يقبل البيانات الوصفية عبر PrepareInfo للمساعدة في تحديد جلسة المستخدم والتدفق:

  • externalUserId (String، مطلوب) — معرّف المستخدم داخل نظامك. يتم تجزئته تلقائياً باستخدام SHA-256 قبل الإرسال.
  • useCase (String، اختياري) — معرّف السياق أو التدفق الذي يتم تشغيله حالياً (مثل "account_opening" أو "password_recovery"). يُرسَل بنص عادي.
let prepareInfo = PrepareInfo(
externalUserId: "external_user_id",
useCase: "use_case"
)
unicoCheck.build().prepareSelfieCamera(
self,
config: YourUnicoConfigClass(),
prepareInfo: prepareInfo
)

للاطلاع على معالجة النتيجة الكاملة، راجع استقبال النتيجة.