مستودع GitHub
اطّلع على الشيفرة المصدرية والأمثلة على GitHub
حزمة SDK الأصلية: هذا هو النهج الموصى به لتطبيقات Android. توفر حزم SDK الأصلية أفضل تجربة للمستخدم، ومعالجة محسّنة للكاميرا، ودعمًا كاملًا لـ NFC.
المتطلبات
توفر الميزات حسب مستوى API: يتطلب الكشف التلقائي عن المستند والوجه المستوى 24+ من API (أدوات الكشف الخفيفة الخاصة بـ Didit، والمضمّنة في
didit-sdk-core). على أجهزة API 23 يعود SDK إلى الالتقاط اليدوي مع زر تصوير مؤقت. تعمل كل الميزات الأخرى عبر النطاق الكامل من API 23+.تتطلب الموافقة البيومترية الإصدار 4.10.0 أو أحدث من SDK الأصلي. بالنسبة للأشخاص الخاضعين لقوانين ولاية Illinois أو Texas أو Colorado، يمكن لـ Didit أن تطلب الموافقة البيومترية الصريحة قبل أول التقاط للوجه. يعرض Android SDK الإصدار 4.10.0 وما بعده هذه الخطوة. لا تستطيع الإصدارات الأقدم عرضها: تعمل جلساتها كما كانت من قبل، ويُبلّغ القرار بأن الموافقة لم تُجمع (
biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). قم بالترقية إذا كنت تتحقق من أشخاص في تلك الولايات.التثبيت
الخطوة 1: إضافة المستودع
أضف مستودع Maven الخاص بـ Didit إلى كتلةrepositories في ملف settings.gradle.kts لديك:
settings.gradle (Groovy):
الخطوة 2: إضافة التبعية
أضف تبعية SDK إلى ملفbuild.gradle.kts الخاص بتطبيقك:
(!) فيما يخص الإصدار، تأكد من مراجعة مستودع GitHub للاطلاع على أحدث إصدار.
build.gradle (Groovy):
أنواع حزم SDK
يأتي Android SDK في شكل حزم منفصلة، لذا لا يتحمّل تطبيقك تكلفة الحجم الثنائي إلا للميزات التي يستخدمها. الحزمةme.didit:didit-sdk أعلاه هي الحزمة الكاملة. اختر الحزمة المناسبة لتطبيقك:
منذ الإصدار
4.6.0، أصبح توقيع المحافظ الأصلي عبر WalletConnect يتوفر كإضافة اختيارية مستقلة، هي me.didit:didit-sdk-wallet.
تتضمنها حزمة me.didit:didit-sdk الكاملة بالفعل، لذا لن يتغير شيء إذا ثبّتّ الحزمة الكاملة.
إذا كنت تستخدم إحدى الحزم الأخف وتريد أن يتم تأكيد ملكية المحفظة بشكل أصلي داخل تطبيقك، فأضف me.didit:didit-sdk-wallet بجانبها. ومن دون هذه الإضافة يُكمل SDK تأكيد ملكية المحفظة عبر مسار متصفح آمن، فتبقى الميزة تعمل في الحالتين.
كما أدى نقل WalletConnect خارج didit-sdk-core إلى إزالة عدة ميغابايتات من تبعيات المحافظ من كل بناء لا يحتاجها.
جميع الحزم منشورة بالإصدار نفسه، لذا أبقها على 4.13.2.
الحفاظ على صغر حجم التنزيل
تُنزَّل نماذج الكشف المستخدمة في الالتقاط التلقائي أثناء التشغيل وتُخزَّن مؤقتاً، لذلك لا تُحتسب أبداً ضمن حجم تطبيقك. ما يضيفه الالتقاط التلقائي إلى تطبيقك هو المكتبة الأصلية لبيئة تشغيل ML، وهذه التكلفة تختلف حسب معمارية المعالج: تقريباً 10 MB لـarm64-v8a، و7 MB لـ armeabi-v7a، و13 MB لكل واحدة من معماريتي محاكيات x86.
لتتحمّل هذه التكلفة مرة واحدة فقط:
- انشر Android App Bundle (AAB). يسلّم Google Play للجهاز معماريته ولغاته فقط، فيثبّت هاتف arm64 نحو 10 MB من الشيفرة الأصلية (حوالي 4 MB بعد الضغط). أما APK العام فيحزم المعماريات الأربع كلها، بحجم إجمالي يتجاوز 40 MB، وهذا هو السبب الأكثر شيوعاً لقياسات الحجم الكبيرة غير المتوقعة.
-
إذا وزّعت APK واحداً وكان جمهورك من هواتف وأجهزة لوحية ARM، فقيّد المعماريات المضمّنة:
أبقِ كل ABI يشغّله مستخدموك فعلاً. أضف
x86_64إذا كنت تستهدف أجهزة Chromebook أو أجهزة x86 أخرى، أو انشر تقسيمات APK لكل ABI حتى لا يفقد أي جهاز الدعم. -
فعّل R8: اضبط
isMinifyEnabled = trueوisShrinkResources = trueفي نوع بناء الإصدار (minifyEnabled trueوshrinkResources trueإذا كنت تستخدم Groovybuild.gradle). يأتي SDK مع قواعد المستهلك الخاصة به، لذا تُحذف شيفرة SDK غير المستخدمة من دون أي إعداد إضافي. -
حدّ اللغات المضمّنة باستخدام
resConfigs(...)إذا لم تكن بحاجة إلى جميع الإعدادات المحلية الـ48 الخاصة بـ SDK في بناء APK. تتولى تقسيمات اللغات في AAB هذا الأمر تلقائياً على Google Play.
الخطوة 3: إضافة استثناء للتغليف
أضف هذا إلى كتلةandroid في تطبيقك لتجنب تعارضات البناء:
الأذونات
يطلب الـSDK الأذونات التالية. يُصرَّح بها في ملفAndroidManifest.xml الخاص بالـSDK، وستُدمج تلقائياً في ملف البيان (manifest) في تطبيقك:
ميزات الكاميرا وNFC
يُصرّح الـSDK بالميزتينandroid.hardware.camera وandroid.hardware.nfc بوصفهما ميزتين اختياريتين (android:required="false"). يتيح ذلك تثبيت تطبيقك على الأجهزة التي لا تحتوي على كاميرا أو على عتاد NFC، إذ يتعامل الـSDK مع غياب العتاد أثناء التشغيل بسلاسة.
البدء السريع
الخطوة 1: تهيئة الـSDK
هيّئ الـSDK داخلApplication.onCreate():
الخطوة 2: بدء التحقق والتعامل مع النتائج
طرق التكامل
يدعم الـSDK طريقتين للتكامل:الطريقة 1: UniLink (الأبسط)
لا يتطلب خادماً خلفياً. يُنشئ الـSDK الجلسة مباشرةً باستخدام معرّف سير العمل (workflow ID) من Didit Console. وهي محصورة فيvendorData فقط.
الطريقة 2: الجلسة من الخادم الخلفي (موصى بها للإنتاج)
ينشئ خادمك الخلفي الجلسة عبر واجهة برمجة تطبيقات إنشاء جلسة التحقق (POST /v3/session/) مع دعم كامل للمعاملات (contact_details وexpected_details وmetadata وcallback وغيرها)، ثم يمرر session_token إلى الـSDK.
- ربط الجلسات بمستخدميك (
vendor_data) - تعيين بيانات وصفية مخصصة
- ضبط عمليات الاستدعاء الخاصة بكل جلسة
- توفير تفاصيل الاتصال والتفاصيل المتوقعة للتحقق المتقاطع
الإعدادات
خصّص سلوك الـSDK:خيارات الإعدادات
خيارات الكاميرا
تتوافق خيارات الكاميرا مع خيارات كاميرا Web SDK. كل عدسة هي إماCameraLens.FRONT أو CameraLens.BACK.
إذا لم يكن في الجهاز العدسة المطلوبة، يستخدم الـSDK أول كاميرا متاحة لديه.
ويُخفى مبدّل الكاميرا أيضاً على الأجهزة التي تحتوي على كاميرا واحدة فقط.
اضبط خيار المبدّل على false لتثبيت المستخدم على العدسة الافتراضية لتلك الخطوة.
الخيارات
showLanguageSelector وshowCloseButton وshowExitConfirmation وcloseOnComplete مطابقة لـDiditSdkConfiguration الخاص بـWeb SDK. أما الخياران languageLocale وfontFamily الخاصان بالأجهزة المحمولة فموجودان لأن الـSDK للأجهزة المحمولة يعرض واجهة التحقق الكاملة بشكل أصلي (على عكس Web SDK الذي يُسند العرض إلى الواجهة المستضافة داخل iframe).التخصيص والألوان: تُضبط الألوان والخلفيات وإعدادات شاشة المقدمة من خلال إعدادات العلامة البيضاء في Didit Console، وليس في إعدادات الـSDK. يضمن ذلك هوية بصرية متسقة عبر جميع المنصات.
دعم اللغات
يدعم الـSDK 54 لغة. وإذا لم تُحدَّد لغة، يستخدم الـSDK لغة الجهاز مع الإنجليزية كبديل احتياطي.الخيارات المتقدمة
للمعاملات المتقدمة للجلسة (contact_details وexpected_details وmetadata وcallback)، استخدم طريقة الجلسة من الخادم الخلفي. يستدعي خادمك الخلفي واجهة برمجة تطبيقات إنشاء جلسة التحقق مع كامل المعاملات، ثم يمرر session_token إلى الـSDK.
معالجة النتائج
يوفّر الصنف المغلق (sealed class)VerificationResult نتيجة التحقق:
حالات النتيجة
خصائص SessionData
أنواع الأخطاء
جميع الأخطاء أصناف فرعية مغلقة (sealed subclasses) لـme.didit.sdk.VerificationError:
فقدان الاتصال
إذا فقد الجهاز اتصاله أثناء التحقق، يعرض SDK شاشة “لا يوجد اتصال بالإنترنت” تغطي مسار التحقق بدلاً من ترك خطوة في حالة التحميل. يواصل SDK التحقق من الاتصال في الخلفية، ويغلق الشاشة تلقائياً بمجرد عودة إمكانية الوصول إلى Didit، ويتابع المستخدم من الخطوة التي كان عليها. تعرض الشاشة الزر حاول مرة أخرى وعند تعيينshowCloseButton إلى true (القيمة الافتراضية)، الزر الخروج من التحقق.
الخروج ينهي التحقق بالنتيجة VerificationResult.Failed(error = VerificationError.NetworkError, session = ...)، وبذلك يعرف تطبيقك أن المستخدم خرج بسبب الاتصال.
مثال كامل لمعالجة النتيجة
مراقبة حالة SDK
يمكنك مراقبة حالة SDK لبناء واجهة تحميل مخصصة:ProGuard / R8
يتضمن SDK قواعد ProGuard الخاصة بالمستهلك. لا حاجة إلى أي إعداد إضافي. إذا كنت تستخدم وضع R8 الكامل، فقد تحتاج إلى إضافة هذا السطر إلىgradle.properties:
مثال شامل (جلسة الخادم → SDK أندرويد → النتيجة)
هذا النمط هو التكامل الجاهز للإنتاج. ينشئ الخادم الخلفي الجلسة، ويستلم تطبيق أندرويد tokensession_token، ويشغّل مسار التحقق عبر SDK.