> ## 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.

# Нативные KYC SDK: iOS, Android, RN, Flutter

> KYC SDK от Didit для iOS, Android, React Native и Flutter: NFC-паспорт, проверка живости. От $0.33 за полную проверку, $10 бесплатно в месяц.

> [!NOTE]
>
> Эти версии относятся к SDK для верификации личности. Нативные модули и обёртки для аутентификации выпускаются отдельно: см. [краткие руководства по аутентификации](https://docs.didit.me/ru/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/ru/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/ru/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.13.2 | ✅ | RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+ | [Руководство по React Native SDK](https://docs.didit.me/ru/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/ru/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Любой современный браузер | [Руководство по Web SDK](https://docs.didit.me/ru/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **Для биометрического согласия нужен нативный SDK версии 4.10.0 или новее.** Для пользователей, на которых распространяются законы штатов Иллинойс, Техас или Колорадо, Didit может запросить явное [биометрическое согласие](https://docs.didit.me/ru/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 или SDK, который не сообщает свою версию, этот шаг показать не может: его сессии выполняются как прежде, а решение возвращает `biometric_consent.status: "pending"` с `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Если вы верифицируете пользователей в этих штатах, обновите SDK.

### Что нового в 4.13.2

На iOS запрос фото с камеры, которая открывается, но не выдаёт кадров, больше не приводит к сбою приложения: каждый запрос фото сначала проверяет наличие работающей камеры с активным видеоподключением, и вместо этого экран показывает ошибку камеры или пропуск шага.
На Android на шаге селфи для поиска по ID запрос фото с камеры, которая не выдаёт кадров, завершается ошибкой камеры на экране через 5 секунд вместо бесконечного ожидания.
На приветственном экране, пока список шагов продолжается под нижним затемнением, круглая кнопка «Прокрутить вниз» располагается по горизонтали по центру списка (в том числе в языках с написанием справа налево), как в веб-сценарии. Нажатие прокручивает список вниз, а кнопка скрывается в конце списка и при открытом модальном окне.
Android 4.13.1 был промежуточным релизом только с кнопкой «Прокрутить вниз»; 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 (США и Канада) показывает под кнопкой «Отправить код» краткое предупреждение о тарифах оператора («Могут взиматься стандартные тарифы за сообщения и передачу данных») со ссылками на Условия SMS и Политику конфиденциальности на языке пользователя.
Овал для селфи теперь помещается над своими элементами управления на небольших экранах, а зелёная кнопка «Готово», «Понятно» после фото документа и экран «Селфи снято» удалены: снятое фото сразу переходит к обработке.
Когда съёмка документа служит только запасным вариантом, а первым предлагается цифровой ID-кошелёк, стартовый экран кошелька предлагает только сам кошелёк, а повторная попытка с кошельком оставляет верификацию открытой без ссылки на документ.
Флаг отображается для каждого кода страны, на который Didit может отправить сообщение, и всегда соответствует стране.
Сценарий песочницы, включённый для сессии, которая уже началась, теперь показывает причину вместо общей ошибки.
На Android кошелёк Credential Manager называется «Подтвердить с помощью цифрового удостоверения личности», поскольку на этот запрос может ответить Google Wallet или любой другой Android-кошелёк, содержащий совместимый ID. iOS этот способ не предлагает.

### Что нового в 4.12.2

На приветственном экране логотип центрирован над заголовком, выровненным по левому краю, а на iOS логотип клиента отображается высотой 72 pt, как на Android и в вебе.
На шаге ключевых лиц KYB кнопка «Добавить представителя» открывает форму с выбранной ролью представителя и сохраняет человека в списке представителей, даже если сценарий отключает некоторые роли.
В анкетах надпись «Защищено» остаётся закреплённой под кнопкой на небольших экранах и при крупном шрифте, для выбора страны в вопросе об адресе используется заголовок, соответствующий адресу, а у открытого выпадающего списка скругляются углы, как у полей.

### Что нового в 4.12.1

На iPhone с заполненным хранилищем съёмка документа и селфи теперь сохраняет видео: iOS SDK записывает их в памяти и никогда не загружает запись без видеокадров.
Ответ сервера, который отстаёт от более раннего ответа, больше не возвращает к шагу, на который только что ответили (NFC, селфи или документ), на iOS и Android.

### Что нового в 4.12.0

Логотипы для всех цифровых ID-кошельков, которые показывает веб-сценарий (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, эстонская ID-карта и 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/ru/integration/web-sdks/webview-in-ios-android.md) в качестве запасного варианта.

***

## Как проходит сессия верификации

Каждый нативный SDK работает с одной и той же сессией верификации Didit. Процесс выглядит так:

1. **Ваш сервер** вызывает [`POST /v3/session/`](https://docs.didit.me/ru/sessions-api/create-session), передавая `workflow_id` и любой необязательный дополнительный контекст (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. Didit возвращает `session_id`, короткоживущий `session_token` и URL размещённой страницы (`url`).
3. **Ваше мобильное приложение** получает `session_token` от вашего сервера и передаёт его в SDK (`startVerification(token: …)`).
4. Нативный SDK открывает интерфейс верификации, пользователь проходит шаги, и SDK возвращает результат с итоговым `status` сессии (`Approved`, `Declined`, `In Review` и т. д.).
5. **Ваш сервер** получает полное решение через [webhook](https://docs.didit.me/ru/integration/webhooks.md) (`webhook_type: "status.updated"`) и сохраняет его.

> [!NOTE]
>
> Результат SDK показывает итог сценария (статус). Полное решение (поля документа, оценки сравнения лиц, срабатывания AML, данные NFC, предупреждения) передаётся на ваш сервер через webhook и также может быть получено через endpoint [Получение решения по сессии](https://docs.didit.me/ru/sessions-api/retrieve-session.md). Никогда не полагайтесь только на результат на стороне клиента при принятии решений об авторизации.

Все нативные SDK также поддерживают режим **UniLink** (нужен только ID сценария, бэкенд не требуется). Используйте UniLink для быстрых прототипов, а метод с токеном сессии для продакшена.

***

## iOS SDK

**Когда использовать**: нативные приложения на Swift / SwiftUI / UIKit для iOS 13+.

Легковесный iOS SDK, управляемый сервером, для верификации личности с минимальной настройкой.

> [card] [Репозиторий на GitHub](https://github.com/didit-protocol/sdk-ios)
>
> Исходный код и примеры на GitHub

**Ключевые возможности:**

* Поддержка SwiftUI и UIKit
* Считывание NFC-паспортов и ID-карт (iOS 15+; варианты без NFC, `Core` и `AutoDetection`, убирают NFC и OpenSSL и работают на iOS 13+)
* Поддержка 54 языков
* Настраиваемое оформление интерфейса
* Интеграция по токену сессии или ID сценария

**Быстрый старт:**

```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/ru/integration/native-sdks/ios-sdk.md)

***

## Android SDK

**Когда использовать**: нативные приложения на Kotlin / Jetpack Compose / Java для Android 6.0 (API 23) и выше.

Легковесный серверно управляемый Android SDK для верификации личности с минимальной настройкой.

> [card] [Репозиторий на GitHub](https://github.com/didit-protocol/sdk-android)
>
> Исходный код и примеры на GitHub

**Ключевые возможности:**

* Поддержка Kotlin и Jetpack Compose
* Считывание NFC-паспортов и ID-карт (опциональный артефакт `me.didit:didit-sdk-core` убирает зависимости NFC)
* Автоматическое обнаружение документов и лиц на основе ML на API 24+ (на API 23 используется ручной захват как резервный вариант)
* Поддержка 54 языков
* Настраиваемое оформление интерфейса
* Интеграция по токену сессии или ID сценария

**Быстрый старт:**

```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/ru/integration/native-sdks/android-sdk.md)

***

## React Native SDK

**Когда использовать**: кроссплатформенные приложения на React Native или Expo, которым нужен единый TypeScript API для iOS и Android (RN 0.76+, New Architecture).

Кроссплатформенный SDK для React Native, который оборачивает нативные SDK для iOS и Android в единый TypeScript API.

> [card] [Репозиторий на GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> Исходный код и примеры на GitHub

**Ключевые возможности:**

* Единый TypeScript API для iOS и Android
* Поддержка Expo с плагином конфигурации без ручной настройки (нужна сборка для разработки, Expo Go не подходит)
* Поддержка React Native CLI
* Считывание NFC-паспортов и ID-карт (отключается через `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Поддержка 54 языков (наследуется от нативных SDK)
* Интеграция по токену сессии или ID сценария

**Быстрый старт:**

```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/ru/integration/native-sdks/react-native-sdk.md)

***

## Flutter SDK

**Когда использовать**: кроссплатформенные приложения на Flutter, которым нужен единый Dart API для iOS и Android (Flutter 3.3+, Dart 3.11+).

Кроссплатформенный Flutter SDK, который оборачивает нативные SDK для iOS и Android в единый Dart API.

> [card] [Пакет pub.dev](https://pub.dev/packages/didit_sdk)
>
> Посмотреть пакет на pub.dev

**Ключевые возможности:**

* Единый Dart API для iOS и Android
* Интеграция с нативными SDK через платформенный канал
* Считывание NFC-паспортов и ID-карт (отключается через `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Поддержка 54 языков (наследуется от нативных SDK)
* Интеграция по токену сессии или ID сценария

**Быстрый старт:**

```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/ru/integration/native-sdks/flutter-sdk.md)

***

## Web SDK (JavaScript)

**Когда использовать**: браузерные приложения и веб-фреймворки (React, Vue, Angular, Next.js, Nuxt, Svelte, vanilla JS). Web SDK открывает размещённый процесс верификации в модальном окне или во встроенном iframe. Для мобильных приложений лучше использовать указанные выше нативные SDK.

JavaScript SDK для веб-приложений с поддержкой React, Vue, Angular, Next.js, Nuxt, Svelte и vanilla JS.

> [card] [Пакет NPM](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Посмотреть пакет на npm

**Ключевые возможности:**

* Программное управление сессиями и обработка событий через обратные вызовы
* Поддержка React, Vue, Angular, Next.js, Nuxt, Svelte и vanilla JS
* Полная поддержка 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/ru/integration/web-sdks/javascript-sdk.md) | [**Все Web SDK**](https://docs.didit.me/ru/integration/web-sdks/overview.md)

***

## Выбор интеграции

Нативные SDK лучше всего подходят, когда нужно считывание NFC-электронных паспортов, захват с камеры с минимальной задержкой и взаимодействие внутри приложения, неотличимое от взаимодействия с другими нативными экранами. Используйте **WebView Integration** как запасной вариант, если вы не можете выпустить обновление нативного SDK (например, для приложений с существующей кодовой базой, которые нельзя пересобрать, или для платформ без нативного SDK Didit).

| Функция | Нативные SDK | WebView |
| - | :-: | :-: |
| Пользовательский опыт | Нативные экраны, полная поддержка жестов | Размещённый веб-сценарий в системном браузере или WebView |
| Захват с камеры | На устройстве, настроен под ID и селфи | Зависит от браузера |
| Считывание NFC-электронных паспортов | ✅ Поддерживается (iOS 15+, Android с поддержкой NFC) | ❌ Недоступно |
| Производительность проверки живости | Нативный ML-конвейер | Браузерный ML-конвейер |
| Оформление White label | ✅ Настраивается в консоли | ✅ Настраивается в консоли |
| Влияние на проверку в App Store / Play Store | Добавляет право на NFC и увеличивает размер сборки | Нет: просто открывает URL |
| Когда использовать | Продакшн-приложения, NFC-сценарии, лучший UX | Быстрая интеграция, стек только для веба, запасной вариант |


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