Мобильные и веб-SDK

Нативные SDK для iOS, Android, React Native и Flutter встраивают процесс прямо в ваше приложение и являются единственным вариантом с поддержкой NFC. Веб-SDK встраивают процесс на ваш фронтенд.

Short answer

Нативные SDK существуют для iOS, Android, React Native и Flutter; веб-SDK встраивают процесс на ваш фронтенд. Используйте нативный SDK, когда вам нужен NFC или лучшее поведение камеры - WebView не даёт ни того, ни другого. Результаты всё равно приходят через webhook, а не из SDK.

#Зачем нужен SDK, а не просто редирект

Редирект на размещённую страницу требует меньше всего усилий и вполне подходит для большинства сценариев. SDK оправдан, когда:

  • Вам нужен NFC. Чип в паспорте или удостоверении личности нельзя считать со страницы браузера. Нативный SDK - единственный вариант. См. верификация по NFC-чипу.
  • Вы не хотите, чтобы пользователь покидал ваше приложение. Переход по редиректу и обратно - реальная точка отказа на мобильных устройствах.
  • Вам нужно лучшее поведение камеры. Нативный доступ к камере надёжнее, чем через браузер, особенно на старых устройствах.

#Что доступно

ПлатформаОсобенности
iOSРаспространяется как XCFramework
AndroidРаспространяется через Maven
React NativeОборачивает нативные модули; поддерживает New Architecture
FlutterОборачивает нативные модули
JavaScript / вебВстраивает размещённый процесс на ваш веб-фронтенд
Встроенный iframeОтображает процесс прямо внутри вашей страницы вместо редиректа
Страница Integrate в консоли Didit со ссылками на SDK и документацию
  1. Выберите свою платформу, и страница выдаст сниппет для вашего стека.
  2. Здесь есть ссылки на нативные и веб-SDK, у каждого свой быстрый старт.
Каждый SDK начинается с той же страницы, что и API.

Требования к версиям и минимальные версии платформ меняются с каждым релизом, поэтому сверяйтесь с актуальной документацией по SDK, а не со снимком этой справочной страницы - а если вы работаете на конкретной версии фреймворка (например, определённой версии Expo SDK), подтвердите совместимость у вашего контакта в Didit до того, как закладывать это в спринт.

#WebView - это не нативный SDK

Обёртка размещённого веб-процесса в WebView выглядит как встроенный в приложение опыт. Она даёт только видимость этого:

  • Нет NFC. Чип по-прежнему нельзя считать.
  • Разрешения на камеру сложнее получить. Доступ к камере из WebView зависит от настроек хост-приложения, и ошибка здесь приводит ровно к тем жалобам "камера так и не открылась", которые разобраны в статье решение проблем с liveness и совпадением лиц.
  • Локаль берётся от приложения, а не от пользователя. WebView передаёт локаль хост-приложения, поэтому передавайте language явно при создании сессии. См. настройка языка верификации.

Если вы уже идёте на сложности ради процесса внутри приложения, используйте нативный SDK.

#Результаты по-прежнему приходят через webhooks

Здесь многие ошибаются: SDK сообщает вашему приложению, что пользователь завершил процесс. Это не авторитетный источник решения по верификации.

Решение формируется на стороне сервера после того, как проверки завершены, и доходит до вас через webhook. Никогда не открывайте доступ, полагаясь только на колбэк завершения от SDK - клиентский сигнал легко подделать, а проверки на момент его срабатывания могут быть даже не завершены.

Important

Считать, что "SDK сказал - готово" равнозначно "пользователь верифицирован" - самая серьёзная ошибка, которую можно допустить в мобильной интеграции. Подтверждайте на своём сервере, через webhook или endpoint с решением, прежде чем открывать что-либо.

#Одно потребительское приложение или своё?

Отдельного потребительского приложения Didit, в которое размещённая сессия передавала бы пользователя для такого шага, как NFC, не существует. Если вы хотите получить всё - и с NFC, и без него - в рамках единого приложения, это приложение - ваше, со встроенным в него SDK.

#Дистрибуция и конфликты зависимостей

Интеграция нативного SDK иногда конфликтует с другими зависимостями хост-приложения - общей транзитивной библиотекой или сабспеком, который фиксирует версию, зафиксированную ещё чем-то другим. Если вы столкнулись с этим, это конкретная воспроизводимая проблема, о которой стоит сообщить вместе с манифестом зависимостей, а не обходить её, закрепляя старую версию: исправление обычно должно быть на стороне SDK.

#Тестирование на устройстве

Sandbox через SDK работает так же, как и везде - направьте приложение на ключ sandbox-приложения, и каждая проверка будет замокана и бесплатна. Это правильный способ отрепетировать мобильный процесс, потому что поведение SDK, которое важнее всего протестировать (запросы разрешений, жизненный цикл камеры, уход в фон посреди захвата), - это поведение устройства, которое можно проверять сколько угодно раз без затрат. См. тестирование в sandbox.