Репозиторий на GitHub
Смотрите исходный код и примеры на GitHub
Нативный SDK: Это рекомендуемый подход для Android-приложений. Нативные SDK обеспечивают лучший пользовательский опыт, оптимизированную работу с камерой и полную поддержку NFC.
Требования
Доступность функций по уровню API: автоопределение документов и лиц требует API 24+ (собственные легковесные детекторы Didit, входящие в
didit-sdk-core). На устройствах с API 23 SDK переходит к ручному захвату с кнопкой спуска затвора с таймером. Все остальные функции работают во всём диапазоне API 23+.Биометрическое согласие требует нативный SDK версии 4.10.0 или новее. Для людей, на которых распространяется законодательство Иллинойса, Техаса или Колорадо, Didit может запросить явное биометрическое согласие перед первым захватом лица. Android SDK 4.10.0 и новее показывают этот шаг. Более ранние версии не могут его показать: их сессии выполняются как прежде, а решение сообщает, что согласие не собрано (
biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Обновитесь, если вы верифицируете людей в этих штатах.Установка
Шаг 1: Добавьте репозиторий
Добавьте репозиторий Didit Maven в блокrepositories вашего файла settings.gradle.kts:
settings.gradle (Groovy):
Шаг 2: Добавьте зависимость
Добавьте зависимость SDK в файлbuild.gradle.kts вашего приложения:
(!) Перед установкой проверьте в репозитории GitHub, какая версия последняя.
build.gradle (Groovy):
Варианты SDK
Android SDK поставляется в виде отдельных артефактов, поэтому ваше приложение занимает в бинарном коде только столько места, сколько нужно для используемых функций.me.didit:didit-sdk выше — это полный пакет. Выберите подходящий вариант:
Начиная с
4.6.0, нативная подпись кошелька WalletConnect поставляется как отдельное необязательное дополнение me.didit:didit-sdk-wallet.
Полный пакет me.didit:didit-sdk уже включает его, поэтому при установке пакета ничего не меняется.
Если вы используете один из облегчённых артефактов и хотите, чтобы подтверждение владения кошельком выполнялось нативно внутри приложения, добавьте me.didit:didit-sdk-wallet рядом с ним. Без этого дополнения SDK завершает подтверждение владения кошельком через защищённый сценарий в браузере, так что функция работает в любом случае.
Перенос WalletConnect из didit-sdk-core также убрал несколько мегабайт зависимостей для кошельков из каждой сборки, которой они не нужны.
Все артефакты публикуются в одной версии, поэтому для всех используйте 4.13.2.
Как уменьшить размер загрузки
Модели обнаружения, которые используются для автозахвата, загружаются во время работы приложения и кэшируются, поэтому они никогда не учитываются в размере вашего приложения. Автозахват добавляет в приложение нативную библиотеку ML-рантайма, а её размер зависит от архитектуры процессора: примерно 10 МБ дляarm64-v8a, 7 МБ для armeabi-v7a и 13 МБ для каждой из двух x86-архитектур эмуляторов.
Чтобы заплатить за это только один раз:
- Публикуйте Android App Bundle (AAB). Google Play доставляет только архитектуру и языки конкретного устройства, поэтому телефон на arm64 устанавливает примерно 10 МБ нативного кода (около 4 МБ в сжатом виде при загрузке). Универсальный APK содержит все четыре архитектуры и весит более 40 МБ, что чаще всего и приводит к неожиданно большим показателям размера.
-
Если вы распространяете один APK, а ваша аудитория — телефоны и планшеты на ARM, ограничьте включаемые архитектуры:
Сохраните все ABI, которые реально используют ваши пользователи: добавьте
x86_64, если вы поддерживаете Chromebook или другие x86-устройства, либо публикуйте APK с разделением по ABI, чтобы ни одно устройство не потеряло поддержку. -
Включите R8: установите
isMinifyEnabled = trueиisShrinkResources = trueв типе сборки release (minifyEnabled trueиshrinkResources true, если вы используете Groovybuild.gradle). SDK поставляется с собственными consumer-правилами, поэтому неиспользуемый код SDK удаляется без дополнительной настройки. -
Ограничьте включаемые языки с помощью
resConfigs(...), если вам не нужны все 48 локалей SDK в сборке APK. Разделение AAB по языкам делает это автоматически в Google Play.
Шаг 3: Добавьте исключение упаковки
Добавьте это в блокandroid вашего приложения, чтобы избежать конфликтов сборки:
Разрешения
SDK требует следующие разрешения. Они объявлены вAndroidManifest.xml SDK и автоматически добавляются в манифест вашего приложения:
Функции камеры и NFC
SDK объявляетandroid.hardware.camera и android.hardware.nfc как необязательные функции (android:required="false"). Благодаря этому ваше приложение можно установить на устройства без камеры или NFC-модуля. SDK корректно обработает отсутствие этого оборудования во время работы.
Быстрый старт
Шаг 1: Инициализация SDK
Инициализируйте SDK вApplication.onCreate():
Шаг 2: Запуск верификации и обработка результатов
Способы интеграции
SDK поддерживает два способа интеграции:Способ 1: UniLink (самый простой)
Бэкенд не нужен. SDK создаёт сессию напрямую, используя ID вашего сценария из Didit Console. Доступен толькоvendorData.
Способ 2: Сессия на бэкенде (рекомендуется для продакшна)
Ваш бэкенд создаёт сессию через API создания сессии верификации (POST /v3/session/) с полной поддержкой параметров (contact_details, expected_details, metadata, callback и других), после чего передаёт session_token в SDK.
- Связывание сессий с вашими пользователями (
vendor_data) - Задание пользовательских метаданных
- Настройка callback для каждой сессии
- Передача контактных данных и ожидаемых данных для перекрёстной проверки
Конфигурация
Настройте поведение SDK:Параметры конфигурации
Параметры камеры
Параметры камеры совпадают с параметрами камеры Web SDK. Каждый объектив задаётся какCameraLens.FRONT или CameraLens.BACK.
Если на устройстве нет запрошенного объектива, SDK использует первую камеру, которая у него есть.
Переключатель камеры также скрывается на устройствах с одной камерой.
Чтобы закрепить за пользователем объектив по умолчанию для этого шага, установите для переключателя значение false.
Параметры
showLanguageSelector, showCloseButton, showExitConfirmation и closeOnComplete совпадают с DiditSdkConfiguration Web SDK. Параметры languageLocale и fontFamily специфичны для мобильного SDK, потому что мобильный SDK отрисовывает весь интерфейс верификации нативно (в отличие от Web SDK, который делегирует отображение размещённому фронтенду внутри iframe).Тема и цвета: цвета, фоны и настройки начальных экранов задаются в настройках White label в Didit Console, а не в конфигурации SDK. Так обеспечивается единый брендинг на всех платформах.
Поддержка языков
SDK поддерживает 54 языка. Если язык не указан, SDK использует локаль устройства, а если локаль не поддерживается, использует английский язык.Расширенные параметры
Для расширенных параметров сессии (contact_details, expected_details, metadata, callback) используйте способ Сессия на бэкенде. Ваш бэкенд вызывает API создания сессии верификации с полным набором параметров, а затем передаёт session_token в SDK.
Обработка результатов
Sealed-классVerificationResult содержит результат верификации:
Варианты результата
Свойства SessionData
Типы ошибок
Все ошибки являются sealed-подклассамиme.didit.sdk.VerificationError:
Потеря соединения
Если устройство теряет соединение во время верификации, SDK показывает экран «Нет подключения к интернету» вместо того, чтобы оставлять текущий шаг в состоянии загрузки. SDK продолжает проверять соединение в фоновом режиме и сам закрывает экран, как только Didit снова становится доступен. Пользователь продолжает с того шага, на котором остановился. На экране есть кнопка Try Again, и еслиshowCloseButton равен true (по умолчанию), кнопка Exit Verification.
Выход завершает верификацию с VerificationResult.Failed(error = VerificationError.NetworkError, session = ...), поэтому ваше приложение узнает, что пользователь вышел из-за потери соединения.
Полный пример обработки результата
Наблюдение за состоянием SDK
Вы можете отслеживать состояние SDK, например для собственного интерфейса загрузки:ProGuard / R8
SDK включает собственные consumer-правила ProGuard. Дополнительная настройка не требуется. Если вы используете полный режим R8, возможно, потребуется добавить вgradle.properties следующее:
Пример от начала до конца (сессия на бэкенде → Android SDK → результат)
Этот подход подходит для продакшена. Ваш бэкенд создаёт сессию, ваше Android-приложение получаетsession_token, а SDK запускает процесс верификации.