> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# حزم SDK للجوال: iOS وAndroid وReact Native وFlutter

> SDK من Didit للتحقق من KYC على iOS وAndroid وReact Native وFlutter مع NFC وكشف الحيوية. من $0.33 لكل فحص كامل، و$10 مجاناً شهرياً.

> [!NOTE]
>
> تشير هذه الإصدارات إلى حزم SDK الخاصة بالتحقق من الهوية. لوحدات المصادقة الأصلية والأغلفة إصدار منفصل: راجع [أدلة البدء السريع للمصادقة](https://docs.didit.me/ar/authentication/overview.md).

ادمج التحقق من Didit بشكل أصلي في تطبيقات الهاتف المحمول الخاصة بك باستخدام حزم SDK الرسمية لدينا. توفر حزم SDK الأصلية **تجربة مستخدم سلسة** و**أداءً أفضل** و**وصولاً كاملاً إلى إمكانات الجهاز** مقارنةً بالتكاملات القائمة على WebView.

> [!NOTE]
>
> ### **النهج الموصى به**: للحصول على أفضل تجربة مستخدم، استخدم حزم SDK الأصلية لدينا بدلاً من تكامل WebView. تتولى حزم SDK الأصلية كل تعقيدات أذونات الكاميرا وقراءة NFC وكشف الحيوية مباشرةً دون إعداد إضافي.

***

## توفّر SDK

| المنصة | طريقة التوزيع | أحدث إصدار | NFC | أدنى إصدار مدعوم | الوثائق |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager وCocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (الأساسي)، iOS 15.0+ (NFC) | [دليل iOS SDK](https://docs.didit.me/ar/integration/native-sdks/ios-sdk.md) |
| Android | Maven (مستودع مخصص، `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [دليل Android SDK](https://docs.didit.me/ar/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.13.2 | ✅ | RN 0.76+ (البنية الجديدة)، iOS 13.0+ / Android API 24+ | [دليل React Native SDK](https://docs.didit.me/ar/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.13.2 | ✅ | Flutter 3.3+، Dart 3.11+، iOS 13.0+ / Android API 23+ | [دليل Flutter SDK](https://docs.didit.me/ar/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | أي متصفح حديث | [دليل Web SDK](https://docs.didit.me/ar/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **تتطلب الموافقة البيومترية إصدار SDK الأصلي 4.10.0 أو أحدث.** بالنسبة للأشخاص الخاضعين لقوانين إلينوي وتكساس وكولورادو، يمكن لـ Didit أن تطلب [الموافقة البيومترية](https://docs.didit.me/ar/getting-started/biometric-consent.md) الصريحة قبل أول التقاط للوجه. يعرض التدفق المستضاف (Web SDK وWebView والمتصفح) وSDK iOS وAndroid الأصليان بالإصدار 4.10.0 أو أحدث هذه الخطوة، وتعرضها React Native وFlutter في إصدار يثبّت SDK الأصلي على 4.10.0 أو أحدث. لا يستطيع SDK الأصلي الذي يقل إصداره عن 4.10.0، أو الذي لا يُبلغ عن إصداره، عرض هذه الخطوة: تعمل جلساته كما كانت من قبل، ويُبلغ القرار عن `biometric_consent.status: "pending"` مع `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. قم بالترقية إذا كنت تتحقق من أشخاص في تلك الحالات.

### ما الجديد في 4.13.2

على iOS، لم يعد طلب التقاط صورة من كاميرا تُفتح لكنها لا ترسل أي إطارات يتسبب في تعطل تطبيقك: كل طلب صورة يتحقق أولاً من وجود جلسة كاميرا تعمل مع اتصال فيديو نشط، وتعرض الشاشة بدلاً من ذلك خطأ الكاميرا أو التخطي.
على Android، في خطوة التقاط السيلفي لبحث الهوية، ينتهي طلب الصورة من كاميرا لا ترسل أي إطارات بخطأ الكاميرا على الشاشة بعد 5 ثوانٍ بدلاً من الانتظار إلى ما لا نهاية.
في شاشة الترحيب، وبينما تستمر قائمة الخطوات أسفل تدرّجها السفلي، يظهر زر دائري بعنوان "التمرير إلى الأسفل" في منتصف القائمة أفقياً (وكذلك في اللغات التي تُكتب من اليمين إلى اليسار)، كما في التدفق على الويب. يؤدي النقر إلى تمرير القائمة إلى الأسفل، ويختفي الزر عند نهاية القائمة وأثناء فتح ورقة سفلية.
كان الإصدار 4.13.1 على Android إصداراً مرحلياً يحتوي على زر "التمرير إلى الأسفل" فقط، ويضيف 4.13.2 هذا الزر إلى iOS وReact Native وFlutter.
يصلح React Native 4.13.2 أيضاً عطلاً عند التشغيل في إصدارات Android النهائية المضغوطة بـ R8 و`proguard-android-optimize.txt`: تحمل الحزمة الآن قواعد R8 الخاصة بها.
يُبنى Flutter 4.13.2 أيضاً باستخدام Android Gradle Plugin 9 وKotlin المدمج فيه.

### ما الجديد في 4.13.0

في خطوة الهاتف، يظهر لكل رقم +1 (الولايات المتحدة وكندا) إفصاح قصير عن شركة الاتصالات أسفل زر "إرسال الرمز" ("قد تُطبَّق أسعار الرسائل والبيانات القياسية")، مع روابط إلى شروط الرسائل النصية وسياسة الخصوصية، بلغة الشخص.
تتموضع البيضاوية الخاصة بالسيلفي الآن فوق عناصر التحكم فيها على الشاشات القصيرة، وقد أُزيلت الكبسولة الخضراء "تم" وزر "فهمت" بعد التقاط صورة المستند وشاشة "تم التقاط صورة السيلفي": تنتقل الصورة الملتقطة مباشرة إلى "جارٍ المعالجة".
عندما يكون التقاط المستند هو الخيار الاحتياطي وتتقدم المحفظة الرقمية للهوية، تعرض شاشة إطلاق المحفظة المحفظة وحدها، وتُبقي إعادة المحاولة في المحفظة عملية التحقق مفتوحة دون رابط مستند.
يُرسم علم لكل رمز دولة يمكن أن يرسله Didit، ولا يُرسم العلم الخاطئ أبداً.
عندما يُفعَّل سيناريو بيئة الاختبار على جلسة بدأت بالفعل، يُظهر الآن السبب بدلاً من خطأ عام.
على Android، تعرض محفظة Credential Manager عبارة "التحقق باستخدام هوية رقمية"، لأن Google Wallet أو أي محفظة أخرى على Android تحمل هوية متوافقة يمكنها الرد عليها. لا يقدم iOS هذه الطريقة.

### ما الجديد في 4.12.2

تضع شاشة الترحيب الشعار في المنتصف فوق العنوان المحاذى إلى اليسار، ويعرض iOS شعار العميل بارتفاع 72 نقطة، كما يفعل Android والويب.
في خطوة الأشخاص الرئيسيين لـ KYB، يفتح "إضافة ممثل" وفيه دور ممثل محدد، ويحفظ الشخص ضمن الممثلين حتى عندما يُعطّل سير العمل بعض الأدوار.
في الاستبيانات، يبقى "مؤمَّن بواسطة" مثبتاً أسفل الزر على الشاشات القصيرة وعند النص الكبير، ويحمل منتقي الدولة في سؤال العنوان عنواناً خاصاً بالعنوان، وتأخذ القائمة المنسدلة المفتوحة زوايا الحقول.

### ما الجديد في 4.12.1

على iPhone تكون سعته التخزينية ممتلئة، تحتفظ التقاطات المستند والسيلفي الآن بالفيديو الخاص بها: يسجل iOS SDK هذه التسجيلات في الذاكرة، ولا يرفع أي تسجيل خالٍ من إطارات الفيديو.
لم تعد إجابة الخادم المتأخرة عن إجابة مبكرة تعيد فتح الخطوة التي أُجيب عنها للتو (خطوة NFC أو السيلفي أو المستند)، على iOS وAndroid.

### ما الجديد في 4.12.0

شعارات لكل محفظة هوية رقمية يعرضها التدفق على الويب (Mobile-ID وConnectID وFinnish Trust Network وOneID وBank iD وMojeID وFranceConnect وAuðkenni والبطاقة الهوياتية الإستونية وGOV.UK Wallet)، على اللوحة نفسها البيضاء أو السوداء كما على الويب.
تُوضح تلميحات الالتقاط ما يجب فعله عندما لا يعمل الالتقاط التلقائي، ويُبقي الترحيب جملته القانونية مثبتة عند أحجام النص الكبيرة، ولا يعرض بدء الجلسة المرفوض إعادة محاولة لا يمكن أن تنجح.
تملك كاميرا المستند والسيلفي زر "تبديل الكاميرا" بجوار زر الالتقاط، ونُقل "تحميل" إلى "نصائح"، ولا يُلتقط أي شيء تلقائياً أثناء فتح ورقة سفلية فوق الكاميرا.
على Android، تسمي ورقة "اختيار الكاميرا" الكاميرات "الكاميرا الأمامية" و"الكاميرا الخلفية" بكل اللغات.

### ما الجديد في 4.11.0

يتضمن الإصدار 4.11.0 أيضاً كل ما كان مخططاً للإصدار 4.10.0، الذي لم يُنشر أبداً، لذا قم بالترقية مباشرة من 4.9.1.
يتمتع التدفق بواجهة مُعاد تصميمها مع شريط علوي جديد، والتقدم معروض بالكلمات، وشاشة ترحيب أُعيد بناؤها.
أصبح الالتقاط التلقائي للمستند والسيلفي متاحاً في كل المتغيرات، باستخدام أدوات الكشف الخفيفة الخاصة بـ Didit، لذلك يلتقط المتغيران `Core` و`AutoDetection` بالطريقة نفسها.
أصبح المتغير `AutoDetection` وحزمة Android `didit-sdk-autodetection` غير موصى بهما ومطابقان لـ `Core`، ولم تعد حزمة Android `didit-sdk-autodetection-play` منشورة.
خطوات جديدة: التحقق البنكي، والموقع (مع إمكانية تفعيله اختيارياً عبر متغيرات iOS `Core-Location` و`NFC-Location` و`All-Location`)، والتوقيع الإلكتروني، والموافقة البيومترية.

### ما الجديد في الإصدار 4.9.1

تفتح أداتا اختيار الدولة للمستند ولإثبات العنوان الآن على الدولة المكتشفة من عنوان IP الخاص بالمستخدم على iOS وAndroid، حتى لو اكتمل هذا البحث بعد ظهور الشاشة.
لا يتم تجاوز الدولة المحددة في الجلسة أو الدولة التي يختارها المستخدم أبدًا.
على Android، يظهر عنوان القسم وحقول الاستبيان بلغة SDK، ولم يعد مسح جواز السفر عبر NFC يتعطل في النسخة الكاملة.
تم تحسين نصوص التحقق بالروسية والقيرغيزية على المنصتين.

### ما الجديد في الإصدار 4.9.0

تتيح جميع حزم SDK الأصلية والمتعددة المنصات للجوال الآن أداة اختيار لغة يمكن تفعيلها اختياريًا في شاشة الترحيب بالتحقق.
اضبط `showLanguageSelector` على `true` لعرض أداة الاختيار المدمجة والقابلة للبحث نفسها المستخدمة في مسار التحقق على الويب.
الأداة مخفية افتراضيًا، لذلك تحتفظ التكاملات الحالية بسلوكها الحالي إلى أن تفعّلها.

> [!NOTE]
>
> ### **البديل**: إذا لم يكن SDK الأصلي متاحًا لمنصتك بعد، يمكنك استخدام [تكامل WebView](https://docs.didit.me/ar/integration/web-sdks/webview-in-ios-android.md) كحل بديل.

***

## كيف تسير جلسة التحقق

تعتمد كل حزم SDK الأصلية على جلسة التحقق نفسها في Didit. يسير التدفق على النحو الآتي:

1. **خادمك الخلفي** يستدعي [`POST /v3/session/`](https://docs.didit.me/ar/sessions-api/create-session) بـ`workflow_id` بالإضافة إلى أي سياق اختياري (`vendor_data`، و`contact_details`، و`expected_details`، و`metadata`، و`callback`).
2. تُرجع Didit الحقل `session_id`، والحقل `session_token` قصير العمر، والحقل `url` المستضاف.
3. **تطبيقك الجوال** يستلم `session_token` من خادمك الخلفي ويمرّره إلى SDK (`startVerification(token: …)`).
4. تفتح حزمة SDK الأصلية واجهة التحقق، ويُكمل المستخدم الخطوات، وتُرجع الحزمة نتيجة تتضمن الحالة النهائية للجلسة `status` (`Approved`، أو `Declined`، أو `In Review`، إلخ).
5. **خادمك الخلفي** يستلم القرار الكامل عبر [webhook](https://docs.didit.me/ar/integration/webhooks.md) (`webhook_type: "status.updated"`) ويحفظه.

> [!NOTE]
>
> تخبرك نتيجة SDK بنتيجة سير العمل (الحالة). أما القرار الكامل، الذي يشمل حقول المستند، ودرجات مطابقة الوجه، ونتائج AML، وبيانات NFC، والتحذيرات، فيُرسل إلى خادمك عبر webhook، ويمكن أيضاً جلبه من endpoint [Retrieve Session Decision](https://docs.didit.me/ar/sessions-api/retrieve-session.md). لا تثق أبداً بالنتيجة من جهة العميل وحدها عند اتخاذ قرارات التفويض.

تدعم جميع حزم SDK الأصلية أيضاً وضع **UniLink** (معرّف سير العمل فقط، دون الحاجة إلى خادم خلفي). استخدم UniLink للنماذج الأولية السريعة، وطريقة token الجلسة للإنتاج.

***

## حزمة SDK لنظام iOS

**متى تستخدمها**: تطبيقات Swift وSwiftUI وUIKit الأصلية التي تستهدف iOS 13+.

حزمة SDK خفيفة لنظام iOS تعتمد على الخادم للتحقق من الهوية، وتتطلب الحد الأدنى من الإعداد.

> [card] [مستودع GitHub](https://github.com/didit-protocol/sdk-ios)
>
> عرض الشيفرة المصدرية والأمثلة على GitHub

**أبرز الميزات:**

* دعم SwiftUI وUIKit
* قراءة جوازات السفر وبطاقات الهوية عبر NFC (iOS 15+؛ الإصداران `Core` و`AutoDetection` بدون NFC يحذفان NFC وOpenSSL، ويعملان على iOS 13+)
* دعم 54 لغة
* تخصيص مظهر الواجهة
* التكامل عبر token الجلسة أو معرّف سير العمل

**البدء السريع:**

```swift theme={null}
import DiditSDK

// Start verification
DiditSdk.shared.startVerification(token: "your-session-token")

// Handle result
.diditVerification { result in
    switch result {
    case .completed(let session):
        print("Status: \(session.status)")
    case .cancelled:
        print("Cancelled")
    case .failed(let error, _):
        print("Error: \(error)")
    }
}
```

→ [**التوثيق الكامل لحزمة iOS SDK**](https://docs.didit.me/ar/integration/native-sdks/ios-sdk.md)

***

## حزمة SDK لنظام Android

**متى تستخدمها**: تطبيقات Kotlin وJetpack Compose وJava الأصلية التي تستهدف Android 6.0 (API 23) فما فوق.

حزمة SDK خفيفة لنظام Android تعتمد على الخادم للتحقق من الهوية، وتتطلب الحد الأدنى من الإعداد.

> [card] [مستودع GitHub](https://github.com/didit-protocol/sdk-android)
>
> عرض الشيفرة المصدرية والأمثلة على GitHub

**أبرز الميزات:**

* دعم Kotlin وJetpack Compose
* قراءة جوازات السفر وبطاقات الهوية عبر NFC (حزمة `me.didit:didit-sdk-core` التي تُضمَّن اختياريًا تحذف تبعيات NFC)
* اكتشاف المستندات والوجه تلقائياً بالتعلم الآلي على API 24+ (مع الانتقال بسلاسة إلى الالتقاط اليدوي على API 23)
* دعم 54 لغة
* تخصيص مظهر الواجهة
* التكامل عبر token الجلسة أو معرّف سير العمل

**البدء السريع:**

```kotlin theme={null}
import me.didit.sdk.DiditSdk
import me.didit.sdk.VerificationResult

// Initialize in Application.onCreate()
DiditSdk.initialize(this)

// Start verification
DiditSdk.startVerification(token = "your-session-token") { result ->
    when (result) {
        is VerificationResult.Completed -> Log.d("Didit", "Status: ${result.session.status}")
        is VerificationResult.Cancelled -> Log.d("Didit", "Cancelled")
        is VerificationResult.Failed -> Log.e("Didit", "Error: ${result.error.message}")
    }
}
```

→ [**التوثيق الكامل لحزمة Android SDK**](https://docs.didit.me/ar/integration/native-sdks/android-sdk.md)

***

## حزمة SDK لنظام React Native

**متى تستخدمها**: تطبيقات React Native أو Expo متعددة المنصات التي تحتاج إلى واجهة TypeScript موحدة لنظامي iOS وAndroid (RN 0.76+، والبنية الجديدة).

حزمة SDK متعددة المنصات لـ React Native تغلّف حزمتي iOS وAndroid الأصليتين بواجهة TypeScript موحدة.

> [card] [مستودع GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> عرض الشيفرة المصدرية والأمثلة على GitHub

**أبرز الميزات:**

* واجهة TypeScript واحدة لنظامي iOS وAndroid
* دعم Expo مع إضافة إعدادات (config plugin) لا تتطلب إعدادًا (يلزم إنشاء نسخة تطوير، ولا يعمل مع Expo Go)
* دعم React Native CLI
* قراءة جوازات السفر وبطاقات الهوية عبر NFC (يمكن تعطيلها بضبط `DIDIT_SDK_IOS_NFC_ENABLED=false` أو `diditSdkAndroidNfcEnabled=false`)
* دعم 54 لغة (موروثة من حزم SDK الأصلية)
* التكامل عبر token الجلسة أو معرّف سير العمل

**البدء السريع:**

```tsx theme={null}
import { startVerification, VerificationStatus } from '@didit-protocol/sdk-react-native';

const result = await startVerification('your-session-token');

switch (result.type) {
  case 'completed':
    console.log('Status:', result.session.status);
    break;
  case 'cancelled':
    console.log('Cancelled');
    break;
  case 'failed':
    console.log('Error:', result.error.message);
    break;
}
```

→ [**التوثيق الكامل لحزمة React Native SDK**](https://docs.didit.me/ar/integration/native-sdks/react-native-sdk.md)

***

## حزمة SDK لنظام Flutter

**متى تستخدمها**: تطبيقات Flutter متعددة المنصات التي تحتاج إلى واجهة Dart واحدة لنظامي iOS وAndroid (Flutter 3.3+، وDart 3.11+).

حزمة Flutter SDK متعددة المنصات تغلّف حزمتي iOS وAndroid الأصليتين بواجهة Dart موحدة.

> [card] [حزمة pub.dev](https://pub.dev/packages/didit_sdk)
>
> عرض الحزمة على pub.dev

**أبرز الميزات:**

* واجهة Dart واحدة لنظامي iOS وAndroid
* تكامل عبر قناة المنصة مع حزم SDK الأصلية
* قراءة جوازات السفر وبطاقات الهوية عبر NFC (يمكن تعطيلها بضبط `DIDIT_SDK_IOS_NFC_ENABLED=false` أو `diditSdkAndroidNfcEnabled=false`)
* دعم 54 لغة (موروثة من حزم SDK الأصلية)
* التكامل عبر token الجلسة أو معرّف سير العمل

**البدء السريع:**

```dart theme={null}
import 'package:didit_sdk/sdk_flutter.dart';

final result = await DiditSdk.startVerification('your-session-token');

switch (result) {
  case VerificationCompleted(:final session):
    print('Status: ${session.status}');
  case VerificationCancelled():
    print('Cancelled');
  case VerificationFailed(:final error):
    print('Error: ${error.message}');
}
```

→ [**التوثيق الكامل لحزمة Flutter SDK**](https://docs.didit.me/ar/integration/native-sdks/flutter-sdk.md)

***

## حزمة SDK للويب (JavaScript)

**متى تستخدمها**: تطبيقات قائمة على المتصفح وأطر عمل الويب (React وVue وAngular وNext.js وNuxt وSvelte وJavaScript الصرف). تفتح حزمة Web SDK تدفق التحقق المستضاف في نافذة منبثقة أو في iframe مدمج، وفي تطبيقات الجوال يُفضّل استخدام الحزم الأصلية أعلاه.

حزمة JavaScript لتطبيقات الويب، تدعم React وVue وAngular وNext.js وNuxt وSvelte وJavaScript الصرف.

> [card] [NPM Package](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> View package on npm

**أبرز الميزات:**

* إدارة الجلسات برمجياً ومعالجة أحداث الاستدعاء
* دعم React وVue وAngular وNext.js وNuxt وSvelte وJavaScript الصرف
* دعم TypeScript كاملاً
* وضعا النافذة المنبثقة والتضمين المدمج
* إدارة الحالة لواجهات المستخدم المخصصة

**البدء السريع:**

```typescript theme={null}
import { DiditSdk } from '@didit-protocol/sdk-web';

DiditSdk.shared.onComplete = (result) => {
  switch (result.type) {
    case 'completed':
      console.log('Status:', result.session?.status);
      break;
    case 'cancelled':
      console.log('Cancelled');
      break;
    case 'failed':
      console.error('Error:', result.error?.message);
      break;
  }
};

DiditSdk.shared.startVerification({
  url: 'https://verify.didit.me/session/session-token'
});
```

→ [**التوثيق الكامل لحزمة JavaScript SDK**](https://docs.didit.me/ar/integration/web-sdks/javascript-sdk.md) | [**جميع حزم SDK للويب**](https://docs.didit.me/ar/integration/web-sdks/overview.md)

***

## اختيار التكامل

حزم SDK الأصلية هي الخيار الأنسب عندما تحتاج إلى قراءة جواز السفر الإلكتروني عبر NFC، وأقل زمن استجابة في التقاط الكاميرا، وتجربة داخل التطبيق لا تختلف عن شاشاتك الأصلية الأخرى. استخدم **WebView Integration** كخيار احتياطي عندما لا تستطيع إصدار تحديث لحزمة SDK الأصلية (على سبيل المثال، التطبيقات القائمة التي لا يمكنك إعادة بنائها، أو المنصات التي لا تتوفر فيها حزمة Didit SDK أصلية).

| الميزة | حزم SDK الأصلية | WebView |
| - | :-: | :-: |
| تجربة المستخدم | شاشات أصلية مع دعم كامل للإيماءات | مسار ويب مستضاف في متصفح النظام أو WebView |
| التقاط الكاميرا | على الجهاز، مضبوط خصيصاً لبطاقة الهوية وصورة السيلفي | يعتمد على المتصفح |
| قراءة جواز السفر الإلكتروني عبر NFC | ✅ مدعوم (iOS 15+، وأجهزة Android المزودة بـ NFC) | ❌ غير متاح |
| أداء كشف الحيوية | خط أنابيب تعلم آلي أصلي | خط أنابيب تعلم آلي في المتصفح |
| تخصيص العلامة البيضاء | ✅ مُدار من خلال لوحة التحكم | ✅ مُدار من خلال لوحة التحكم |
| تأثير مراجعة App Store / Play Store | يضيف صلاحية NFC ويزيد حجم الملف الثنائي | لا يوجد، فهو يفتح رابطاً فقط |
| متى تستخدمه | تطبيقات الإنتاج، وسير عمل NFC، وأفضل تجربة مستخدم | تكامل سريع، أو بيئة ويب فقط، أو كخيار احتياطي |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.