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

Репозиторий на GitHub

Смотрите исходный код и примеры на GitHub

npm-пакет

@didit-protocol/sdk-react-native

Нативный SDK: Это рекомендуемый подход для приложений React Native и Expo. SDK оборачивает нативные SDK для iOS и Android, обеспечивая лучший пользовательский опыт, оптимизированную работу с камерой и полную поддержку NFC.


Требования

Требования к платформам

Для биометрического согласия нужна нативная версия 4.10.0 или новее. Для людей, на которых распространяется законодательство штатов Иллинойс, Техас или Колорадо, Didit может запросить явное биометрическое согласие перед первым захватом лица. Релиз React Native SDK, который закрепляет нативные версии SDK для iOS и Android 4.10.0 или новее, показывает этот шаг. Более ранние версии не могут его показать: их сессии работают как прежде, а решение сообщает, что согласие не собрано (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Обновитесь, если вы верифицируете людей в этих штатах.

Установка

Expo (Рекомендуется)

Затем добавьте конфигурационный плагин в app.json (или app.config.js). NFC включён по умолчанию:
Плагин автоматически настраивает обе платформы:
  • Android: добавляет Maven-репозиторий Didit в Gradle, задаёт свойство Gradle diditSdkAndroidNfcEnabled и применяет правила для зависимостей и упаковки BouncyCastle
  • iOS: добавляет podspec DiditSDK в Podfile (с привязкой к iOS 15, если NFC включён)
Плагин не редактирует Info.plist. Добавьте ключи разрешений iOS и, для NFC, идентификаторы выбора ISO7816 в ios.infoPlist того же файла. D392F000260100000001 позволяет SDK считывать японскую карту My Number через JPKI:

Отключение NFC-зависимостей

Чтобы собрать приложение без поддержки NFC (меньший размер бинарного файла, возможность NFC не требуется), передайте параметры плагина:
Если NFC отключён, возможность NFC в iOS, права доступа для NFC и настройка профиля подготовки для NFC не требуются.
Этот SDK использует нативные модули (камера, NFC), которые недоступны в Expo Go. Используйте сборку для разработки или выполните npx expo prebuild, чтобы сгенерировать нативные проекты.

React Native CLI

Настройка iOS

Добавьте pod DiditSDK в Podfile (он не опубликован в CocoaPods trunk). В блоке ниже учитывается переменная окружения DIDIT_SDK_IOS_NFC_ENABLED, с помощью которой можно переключить подспецификацию без NFC (DiditSDK/Core) на этапе установки:
Тег в URL podspec должен совпадать с diditNativeSdkVersions.ios в установленной версии пакета. React Native 4.13.2 фиксирует нативные версии iOS 4.13.2 и Android 4.13.2. Не указывайте в podspec ветку main: пакет зависит именно от этой версии нативного SDK для iOS, поэтому, как только main уйдёт вперёд, CocoaPods увидит два несовместимых требования к DiditSDK, и каждый pod install завершится ошибкой. Expo-плагин формирует этот URL автоматически; вручную его нужно прописывать только при использовании чистого React Native CLI.
Затем установите зависимости:
Чтобы пересобрать приложение без NFC-зависимостей, очистите CocoaPods и повторно запустите установку с заданной переменной окружения:

Настройка Android

Добавьте Maven-репозиторий Didit в settings.gradle уровня проекта:
Добавьте следующее в android/app/build.gradle вашего приложения (внутрь блока android { ... }), чтобы устранить конфликты дублирующихся классов BouncyCastle и дубликат OSGI MANIFEST.MF, которые могут возникнуть из-за транзитивных зависимостей DiditSDK:
Чтобы собрать приложение без NFC-зависимостей Android (будет использоваться артефакт me.didit:didit-sdk-core вместо me.didit:didit-sdk), добавьте это в android/gradle.properties:
Удалите это свойство или задайте ему значение true, чтобы использовать полный Android SDK с NFC.

Разрешения

iOS

Добавьте следующие ключи в Info.plist вашего приложения. Если отсутствуют обязательные ключи конфиденциальности iOS, iOS завершит приложение сразу при обращении SDK к защищённому ресурсу.

Настройка NFC

Чтобы включить считывание NFC-чипов в паспортах и ID-картах:
  1. Добавьте возможность чтения NFC-меток в Xcode:
    • Выберите ваш target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Добавьте идентификаторы ISO7816 в Info.plist:
D392F000260100000001 позволяет SDK считывать японскую карту My Number через JPKI: без него iOS не передаёт карту в SDK. Чтение карты My Number пока не включено в продакшне, а этот идентификатор не влияет на другие документы, поэтому его можно добавить уже сейчас.
  1. Добавьте файл entitlements с включённым чтением NFC-меток:
Убедитесь, что профиль подготовки приложения включает возможность NFC Tag Reading. Эта настройка NFC не нужна, если NFC отключён.

Android

Следующие разрешения объявлены в AndroidManifest.xml SDK и автоматически объединяются с манифестом приложения: Аппаратные возможности камеры и NFC объявлены как необязательные (android:required="false"), поэтому ваше приложение можно установить на устройства без этих функций.

Быстрый старт


Способы интеграции

SDK поддерживает два способа интеграции:

Способ 1: token сессии (рекомендуется для продакшна)

Создайте сессию на бэкенде с помощью Create Verification Session API, затем передайте token в SDK:
Этот подход даёт вам полный контроль над:
  • Привязкой сессий к вашим пользователям (vendor_data)
  • Настройкой пользовательских метаданных
  • Настройкой обратных вызовов для каждой сессии

Способ 2: ID сценария (более простая интеграция)

Для более простых интеграций SDK может создавать сессии напрямую по ID вашего сценария:

Конфигурация

Настройте поведение SDK, передав объект DiditConfig:
Для startVerificationWithWorkflow передайте конфигурацию внутри options.config:

Параметры конфигурации

Параметры камеры

Параметры камеры совпадают с параметрами камеры Web SDK. Каждый объектив задаётся как CameraLens.Front или CameraLens.Back. Если на устройстве нет запрошенного объектива, SDK использует первую доступную камеру. Переключатель камеры также скрыт на устройствах с одной камерой. Установите параметр переключателя в false, чтобы зафиксировать пользователя на объективе по умолчанию для этого шага.
Темы и цвета: цвета, фоны и настройки вступительного экрана задаются в ваших настройках White label в Didit Console, а не в конфигурации SDK. Так обеспечивается единый брендинг на всех платформах.

Поддержка языков

SDK поддерживает 54 языка. Если язык не указан, SDK использует язык устройства, с английским в качестве запасного варианта.
Все поддерживаемые языки →

Дополнительные параметры

Эти параметры доступны только с startVerificationWithWorkflow, когда SDK создаёт сессию от вашего имени.

Контактные данные (предзаполнение и уведомления)

Укажите контактные данные, чтобы предзаполнить формы верификации и включить уведомления по электронной почте:

Ожидаемые данные (перекрёстная проверка)

Укажите ожидаемые данные пользователя для автоматической перекрёстной проверки с данными, извлечёнными из документа:
Все поля ExpectedDetails необязательны. Полный тип см. в src/types.ts.

Пользовательские метаданные

Сохраняйте пользовательские метаданные в формате JSON вместе с сессией (они не отображаются пользователю):

Обработка результатов

И startVerification, и startVerificationWithWorkflow возвращают Promise<VerificationResult>. Результат представляет собой дискриминированное объединение: чтобы определить исход, используйте поле type.

Варианты результата

Свойства SessionData

Типы ошибок

Потеря соединения

Если устройство теряет соединение во время верификации, SDK перекрывает процесс экраном «Нет подключения к интернету» вместо того, чтобы оставить шаг в состоянии загрузки. SDK продолжает проверять соединение в фоновом режиме и закрывает экран автоматически, как только Didit снова становится доступен. Пользователь продолжает с того шага, на котором остановился. На экране есть кнопки Try Again и, когда showCloseButton имеет значение true (по умолчанию), Exit Verification. Выход завершает верификацию результатом failed с ошибкой networkError, поэтому ваше приложение узнает, что пользователь ушёл из-за подключения.

Полный пример обработки результата


Сквозной пример (бэкенд-сессия → React Native SDK → webhook)

Это готовая к продакшну интеграция: бэкенд создаёт сессию, RN-приложение получает session_token, а SDK проводит пользователя через процесс. Итоговое решение передаётся на ваш бэкенд через webhook. Никогда не полагайтесь только на результат, полученный на клиенте.

1. Бэкенд: создание сессии

2. React Native: обмен токеном и запуск SDK

3. Бэкенд: получение итогового решения через webhook

Подробности о проверке HMAC-подписи см. в руководстве по webhook.

Полный пример


Последнее изменение 7 ноября 2026 г.