Репозиторий на 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 не требуется), передайте параметры плагина:React Native CLI
Настройка iOS
Добавьте pod DiditSDK вPodfile (он не опубликован в CocoaPods trunk). В блоке ниже учитывается переменная окружения DIDIT_SDK_IOS_NFC_ENABLED, с помощью которой можно переключить подспецификацию без NFC (DiditSDK/Core) на этапе установки:
Настройка Android
Добавьте Maven-репозиторий Didit вsettings.gradle уровня проекта:
android/app/build.gradle вашего приложения (внутрь блока android { ... }), чтобы устранить конфликты дублирующихся классов BouncyCastle и дубликат OSGI MANIFEST.MF, которые могут возникнуть из-за транзитивных зависимостей DiditSDK:
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-картах:-
Добавьте возможность чтения NFC-меток в Xcode:
- Выберите ваш target > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
-
Добавьте идентификаторы ISO7816 в
Info.plist:
D392F000260100000001 позволяет SDK считывать японскую карту My Number через JPKI: без него iOS не передаёт карту в SDK. Чтение карты My Number пока не включено в продакшне, а этот идентификатор не влияет на другие документы, поэтому его можно добавить уже сейчас.
- Добавьте файл entitlements с включённым чтением 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. Никогда не полагайтесь только на результат, полученный на клиенте.