All pages
Powered by GitBook
1 of 28

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Android

Работа с OZ Mobile SDK в операционной системе «Android»

Чтобы начать пользоваться нашим SDK, нужно выполнить следующие шаги.

  1. Добавьте SDK в проект, как описано здесь.

  2. Получите лицензию на SDK – сгенерируйте тестовую самостоятельно на нашем сайте или запросите «боевую» по электронной почте. Для лицензии потребуется application id. Добавьте лицензию в проект, как описано здесь.

  3. Подключите SDK к API. Это необязательный шаг, он выполняется, только если вам нужно обрабатывать какие-либо данные на сервере.

  4. Для съемки видео используйте методы, описанные здесь – вы получите медиафайлы, которые потом можно будет отправить на анализ.

  5. Запустите нужные вам проверки для полученных на предыдущем шаге медиафайлов. Здесь описано, как выполнять проверки.

  6. Если вы хотите настроить внешний вид SDK, здесь написано, как это делается.

Ресурсы

Рекомендуемая версия Android: 5+ (чем новее смартфон, тем быстрее выполняются анализы).

Рекомендуемые версии компонентов:

Версия Gradle

7.5.1

Версия Kotlin

1.7.21

Версия AGP

7.3.1

Java Target Level

1.8

Версия JDK

17

Мы не поддерживаем эмуляторы.

Доступные языки: EN, RU, ES, HY, KK, KY, TR.

Исходные коды примеров приложений с использованием Oz Liveness SDK расположены в репозитории GitLab:

Список методов и полей SDK:

Методы и поля Android SDK

Актуальную сборку демо-приложения Вы можете загрузить по ссылке.

Oz Mobile SDK (iOS, Android, Flutter)

Oz Mobile SDK – Software Developer’s Kit системы Oz Forensics, обеспечивающий удобную интеграцию с мобильными приложениями для регистрации и биометрической идентификации клиентов.

AndroidiOS

В настоящее время мобильные SDK работают в портретном режиме.

Добавление SDK в проект

В build.gradle проекта добавьте строки:

В build.gradle модуля добавьте строки (VERSION – версия, которую вы планируете добавить. Список версий можно найти в ):

для анализов на сервере

для анализов и на сервере, и на устройстве

Обратите внимание: размер выходного файла будет больше.

Вне зависимости от выбранного режима, добавьте еще:

Съемка видео

Создайте контроллер для съемки видео:

action– перечень при записи видео.

По окончании съемки вызывается метод onOZLivenessResult(results:[OZMedia]):

Метод возвращает результаты съемки в виде массива объектов[], которые используются на следующем шаге для выполнения проверок.

Если наш SDK используется только для съемки, пропустите шаг "Выполнение проверок".

Если пользователь прервет запись видео (закроет экран), появится ошибка failedBecauseUserCancelled.

Flutter

Этот раздел описывает, как работать с Oz Flutter SDK для iOS и Android.

Перед началом работы мы рекомендуем установить:

  • Flutter версии 3.0.0 или выше;

  • Android SDK версии 21 или выше;

  • dart версии 2.18.6 или выше;

  • iOS версии 13 или выше;

  • Xcode.

Образец кода для Flutter вы можете найти .

allprojects {
  repositories {
    maven { url "https://ozforensics.jfrog.io/artifactory/main" }
  }
}
dependencies {
  implementation 'com.ozforensics.liveness:sdk:VERSION'
}
dependencies {
implementation 'com.ozforensics.liveness:full:VERSION'
}
android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
Журнале изменений
let actions: [OZVerificationMovement] = [.scanning, .smile, .far]
let ozLivenessVC: UIViewController = OZSDK.createVerificationVCWithDelegate(self, actions: actions)
self.present(ozLivenessVC, animated: true)
extension viewController: OZLivenessDelegate {
 func onError(status: OZVerificationStatus?) {
        //показать ошибку
   }
 }
 func onOZLivenessResult(mediaToAnalyze: [OZMedia]) {
   //Перейти к выполнению проверки
 }
}
действий пользователя
OZMedia
здесь

Подключение к API

Для авторизации в Oz API используйте адрес API и токен доступа, как показано ниже.

OZSDK.setApiConnection(Connection.fromServiceToken(host: "https://sandbox.ohio.ozforensics.com", token: token)) { (token, error) in
}

Мы рекомендуем указывать адрес API в вашем приложении на экране, предшествующем проверке Liveness. После установки адреса происходит служебный вызов API, и если вы устанавливаете адрес при запуске или инициализации приложения, нагрузка на сервер может быть слишком высокой.

Второй вариант: логин и пароль.

OZSDK.setApiConnection(Connection.fromCredentials(host: “https://sandbox.ohio.ozforensics.com”, login: login, password: p)) { (token, error) in
    // Ваш код для обработки ошибки или токена
}

Мы рекомендуем использовать метод аутентификации по токену доступа, как более безопасный.

По умолчанию логи сохраняются вместе с данными по анализам. Если вы планируете хранить логи отдельно от этих данных, настройте отдельное подключение для телеметрии:

let eventsConnection = Connection.fromCredentials(host: https://echo.cdn.ozforensics.com/,
                                login: <[email protected]>,
                                password: your_telemetry_password)
OZSDK.setEventsConnection(eventsConnection) { (token, error) in
}

Локализация для Android: добавление или обновление языкового пакета

Обратите внимание: описанная ниже функциональность работает, начиная с версии 8.1.0.

Чтобы добавить или обновить языковой пакет для Oz Android SDK, сделайте следующие шаги:

Перевод состоит из ключа локализации и соответствующей ему строчки, например, <string name="about">"About"</string>.

  1. Перейдите в папку для нужной локали или создайте такую папку. Детально процесс описан здесь.

  2. Создайте файл и назовите его strings.xml.

  3. Скопируйте строки из приложенного файла в только что созданный.

  4. Переопределите в переводах строки, которые вам нужны.

Список переводов для Android:

15KB
Oz_SDK_Android_Strings.zip
archive
Open

Ключи вида action_*_go относятся к соответствующим жестам. Остальные – к подсказкам для всех жестов, информационным сообщениям или ошибкам.

Когда вместе с новыми версиями появляются новые ключи, если вы не переопределите соответствующие строки в вашем файле, текст для новых ключей будет показываться на английском языке.

Прежний дизайн

Если вы при обновлении с прежних версий (до 6.4.2 включительно) хотите сохранить привычный для клиентов дизайн, сбросьте настройки интерфейса экрана съемки до значений по умолчанию и примените следующие параметры (приведены только те параметры, которые нужно изменить):

// параметры настройки верхней панели
let toolbarCustomization = ToolbarCustomization(
   closeButtonColor: .white,
   backgroundColor: .black)

// параметры настройки текста подсказки
let centerHintCustomization = CenterHintCustomization(
   verticalPosition: 70)
   
// параметры настройки анимации подсказки
let hintAnimationCustomization = HintAnimationCustomization(
    hideAnimation: true)

// параметры настройки рамки вокруг лица
let faceFrameCustomization = FaceFrameCustomization(
   strokeWidth: 6,
   strokeFaceAlignedColor: .green,
   strokeFaceNotAlignedColor: .red)

// параметры настройки фона за рамкой
let backgroundCustomization = BackgroundCustomization(
   backgroundColor: .clear)

OZSDK.customization = OZCustomization(toolbarCustomization: toolbarCustomization,
   centerHintCustomization: centerHintCustomization,
   hintAnimationCustomization: hintAnimationCustomization,
   faceFrameCustomization: faceFrameCustomization,
   versionCustomization: versionCustomization,
   backgroundCustomization: backgroundCustomization)

Локализация для iOS: добавление или обновление языкового пакета

Обратите внимание: описанная ниже функциональность работает, начиная с версии 8.1.0.

Чтобы добавить или обновить языковой пакет для Oz iOS SDK, используйте метод set(languageBundle: Bundle). Он информирует SDK, что вы планируете использовать отличный от стандартного бандл. В OzLocalizationCode используйте кастомный язык (опционально).

Перевод состоит из ключа локализации и соответствующей ему строчки, например, "about" = "О программе".

  • Если вы не укажете кастомные язык и бандл, SDK будет использовать имеющиеся переводы.

  • Если бандл указан, а язык нет, приоритетным считается перевод для ключа из файла локализации кастомного бандла. Если такой ключ там не найден, перевод берется из стандартного бандла.

  • Если указаны кастомные и бандл, и язык, все переводы берутся из файла локализации кастомного бандла.

Список переводов для iOS:

12KB
Oz_SDK_iOS_Strings.zip
archive
Open

Ключи вида Action.*.Task относятся к соответствующим жестам. Остальные – к подсказкам для всех жестов, информационным сообщениям или ошибкам.

При появлении новых ключей, если переводов для них в кастомном бандле нет, будет показываться текст на языке по умолчанию (английском).

Подключение к API

Для авторизации в Oz API используйте адрес API и , как показано ниже.

Мы рекомендуем:

  • Указывать адрес API в вашем приложении на экране, предшествующем проверке Liveness. После установки адреса происходит служебный вызов API, и если вы устанавливаете адрес при запуске или инициализации приложения, нагрузка на сервер может быть слишком высокой.

  • Убедиться, что перед вызовом метода createStartIntent вы инициализировали SDK и подключили его к API. Порядок действий значения не имеет, но они должны успешно завершиться к моменту начала работы createStartIntent.

Второй вариант: логин и пароль.

Мы рекомендуем использовать метод аутентификации по токену доступа, как более безопасный.

По умолчанию логи сохраняются вместе с данными по анализам. Если вы планируете хранить логи отдельно от этих данных, настройте отдельное подключение для :

Очистка авторизации:

Проверка наличия сохраненного access-токена Oz API:

LogOut:

Прежний дизайн

Если вы при обновлении с прежних версий (до 6.4.2 включительно) хотите сохранить привычный для клиентов дизайн, сбросьте настройки интерфейса экрана съемки до значений по умолчанию и примените следующие параметры (приведены только те параметры, которые нужно изменить):

iOS

Работа с OZ Mobile SDK в операционной системе «iOS»

Чтобы начать пользоваться нашим SDK, нужно выполнить следующие шаги.

  1. Добавьте SDK в проект, как описано .

  2. Получите лицензию на SDK – сгенерируйте тестовую самостоятельно на нашем или запросите «боевую» по . Для лицензии потребуется bundle id. Добавьте лицензию в проект, как описано .

  3. SDK к API. Это необязательный шаг, он выполняется, только если вам нужно обрабатывать какие-либо данные на сервере. Если вы используете , никакие данные никуда не передаются, и подключение к API не нужно.

  4. Создайте контроллер для съемки, как описано – вы получите медиафайлы, которые потом можно будет отправить на анализ.

  5. Запустите нужные вам проверки для полученных на предыдущем шаге медиафайлов. описано, как выполнять проверки.

  6. Если вы хотите настроить внешний вид SDK, написано, как это делается.

Ресурсы

Минимальная версия iOS: 11.

Минимальная версия Xcode: 16.

Доступные языки: EN, RU, ES, HY, KK, KY, TR.

Исходный код примера приложения с использованием Oz Liveness SDK расположен в репозитории GitLab:

Список методов и полей SDK:

Актуальную сборку демо-приложения Вы можете загрузить по .

Добавление SDK в приложение

CocoaPods

Для добавления OZLivenessSDK в ваше приложение через менеджер зависимостей CocoaPods и интеграции OZLivenessSDK в проект Xcode добавьте в Podfile:

VERSION (опционально, по умолчанию устанавливается последняя версия) – версия, которую можно найти в .

Начиная с версии 8.1.0, можно использовать упрощенный код:

По умолчанию устанавливается полная версия SDK (с режимами анализа на сервере и на устройстве). Если нужен только серверный анализ, код будет выглядеть так:

Для версий 8.1.0 и выше:

SPM

Установка через SPM возможна для SDK версий 8.7.0 и новее.

Добавьте через SPM зависимости пакетов по ссылке: (, как добавить зависимости). Файл OzLivenessSDK обязателен для добавления, OzLivenessSDKOnDevice можно не добавлять, если вы не используете анализы на устройстве.

Ручная установка

Вы также можете добавить файлы SDK в проект вручную.

  1. Скачайте следующие файлы и добавьте их в проект:

  • OZLivenessSDK.xcframework,

  • OZLivenessSDKResources.bundle,

  • OZLivenessSDKOnDeviceResources.bundle (если вы не используете анализы на устройстве, этот файл можно не скачивать).

  1. Скачайте TensorFlow : потребуется версия 2.11.

  2. Убедитесь, что:

  • оба файла xcframework отображаются в Target-Build Phases -> Link Binary With Libraries и Target-General -> Frameworks, Libraries, and Embedded Context;

  • файл(ы) bundle отображаются в Target-Build Phases -> Copy Bundle Resources.

pod 'OZLivenessSDK', :git => 'https://gitlab.com/oz-forensics/oz-liveness-ios', :tag => 'VERSION'
// для установки последней версии
pod ‘OZLivenessSDK’
// ИЛИ для установки конкретной версии
// pod ‘OZLivenessSDK’, ‘8.10.0’
pod 'OZLivenessSDK/Core', :git => 'https://gitlab.com/oz-forensics/oz-liveness-ios.git',  :tag => 'VERSION'
pod ‘OZLivenessSDK/Core’
// ИЛИ
// pod ‘OZLivenessSDK/Core’, ‘8.1.0’
Журнале изменений
https://gitlab.com/oz-forensics/oz-mobile-ios-sdk
здесь описано
отсюда
здесь
OzLivenessSDK.INSTANCE.getConfig().setCustomization(new UICustomization(
// параметры настройки верхней панели
new ToolbarCustomization(
    R.drawable.ib_close,
    new Color.ColorHex("#FFFFFF"),
    new Color.ColorHex("#000000"),
    100, // непрозрачность фона верхней панели (в %)
    ),
// параметры настройки текста подсказки
new CenterHintCustomization(
    70, // положение по вертикали (в %)
),
// параметры настройки анимации подсказки
new HintAnimation(
    hideAnimation = true
),
// параметры настройки рамки вокруг лица
new FaceFrameCustomization(     
    new Color.ColorHex("#EC574B"), 
    new Color.ColorHex("#00FF00"),
    6, // ширина линии рамки (в dp)
 ),
// параметры настройки фона за рамкой
new BackgroundCustomization(
    100 // непрозрачность фона (в %)
),
  )
);
OzLivenessSDK.config.customization = UICustomization(
    // параметры настройки верхней панели
    toolbarCustomization = ToolbarCustomization(
        closeIconTint = Color.ColorHex("#FFFFFF"),
        backgroundColor = Color.ColorHex("#000000"),
        backgroundAlpha = 100,
    ),
    // параметры настройки текста подсказки
    centerHintCustomization = CenterHintCustomization(
        verticalPosition = 70
    ),
    hintAnimation = HintAnimation(
    hideAnimation = true
),
    // параметры настройки рамки вокруг лица
    faceFrameCustomization = FaceFrameCustomization(
        strokeDefaultColor = Color.ColorHex("#EC574B"),
        strokeFaceInFrameColor = Color.ColorHex("#00FF00"),
        strokeWidth = 6,
    ),
    // параметры настройки фона за рамкой
    backgroundCustomization = BackgroundCustomization(
        backgroundAlpha = 100
    ),
)
OzLivenessSDK.setApiConnection(null)
OzLivenessSDK.INSTANCE.setApiConnection(null, null);
val isLoggedIn = OzLivenessSDK.isLoggedIn
boolean isLoggedIn = OzLivenessSDK.INSTANCE.isLoggedIn();
OzLivenessSDK.logout()
OzLivenessSDK.INSTANCE.logout();
токен доступа
телеметрии
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(host, token))
OzLivenessSDK.setApiConnection(
    OzConnection.fromCredentials(host, username, password),
    statusListener(
        { token -> /* токен */ },
        { ex -> /* ошибка */ }
    )
)
OzLivenessSDK.setEventsConnection(
    OzConnection.fromCredentials(
        "https://echo.cdn.ozforensics.com/",
        "<[email protected]>",
        "your_telemetry_password"
    )
)
OzLivenessSDK.INSTANCE.setApiConnection(
        OzConnection.Companion.fromServiceToken(host, token), 
        null
);
OzLivenessSDK.INSTANCE.setApiConnection(
        OzConnection.Companion.fromCredentials(host, username, password),
        new StatusListener<String>() {
            @Override
            public void onStatusChanged(@Nullable String s) {}
            @Override
            public void onSuccess(String token) { /* токен */ }
            @Override
            public void onError(@NonNull OzException e) { /* ошибка */ }
        }
);
OzLivenessSDK.setEventsConnection(
        OzConnection.fromCredentials(
                "https://tm.ozforensics.com/",
                "<[email protected]>",
                "your_telemetry_password"
        )
);

Получение лицензии

Сгенерируйте тестовую лицензию самостоятельно здесь (внимание, страница на английском языке) или свяжитесь с нами по email для выпуска продуктивной лицензии. Для подготовки лицензии потребуется applicationId (bundle id).

Для добавления файла лицензии в SDK вызовите метод OzLivenessSDK.init с одним из параметров LicenseSources:

  • LicenseSource.LicenseAssetId должен содержать путь к файлу forensics.license, расположенному в проекте в папке res/raw.

  • LicenseSource.LicenseFilePath должен содержать пусть к файлу на устройстве (вне проекта).

OzLivenessSDK.init(context,
    listOf(
        LicenseSource.LicenseAssetId(R.raw.your_license_name),
        LicenseSource.LicenseFilePath("абсолютный путь к файлу лицензии")
    ),
    object : StatusListener<LicensePayload> {
        override fun onSuccess(result: LicensePayload) { /*проверка информации о лицензии*/ }
        override fun onError(error: OzException) { /*обработка исключения */ }
    }
  )
OzLivenessSDK.INSTANCE.getConfig().setBaseURL(BASE_URL);
OzLivenessSDK.INSTANCE.init(context,
    Arrays.asList(
        new LicenseSource.LicenseAssetId(R.raw.forensics),
        new LicenseSource.LicenseFilePath("aбсолютный путь к файлу лицензии")
    ),
    new StatusListener<LicensePayload>() {
        @Override public void onStatusChanged(@Nullable String s) {}
        @Override public void onSuccess(LicensePayload licensePayload) { /*проверка информации о лицензии*/ }
        @Override public void onError(@NonNull OzException e) { /*обработка исключения */ }
    }
);

Если при обработке лицензии возникнут ошибки, вы получите сообщение с описанием этих ошибок. Если ошибок нет, система выведет данные о лицензии. Вы также можете запросить эти данные с помощью метода getLicensePayload.

Возможные ошибки лицензии

Сообщение об ошибке
Что делать

License error. License at (your_URI) not found

Отсутствует файл лицензии. Проверьте наименование и путь к файлу.

License error. Cannot parse license from (your_URI), invalid format

Файл лицензии поврежден. Пожалуйста, отправьте его нам по электронной почте.

License error. Bundle company.application.id is not in the list allowed by license (bundle.id1, bundle.id2)

Идентификатор приложения отсутствует в списке разрешенных для данной лицензии идентификаторов. Проверьте написание, если все корректно, нужна новая лицензия.

License error. Current date yyyy-mm-dd hh:mm:ss is later than license expiration date yyyy-mm-dd hh:mm:ss

Срок действия лицензии истек. Пожалуйста, свяжитесь с нами.

License is not initialized. Call 'OzLivenessSDK.init before using SDK

Лицензия не устанавливалась. Вызовите метод OzLivenessSDK.init, как показано выше в этой статье

Получение лицензии

Для работы SDK требуется лицензия. Сгенерируйте тестовую лицензию самостоятельно здесь (внимание, страница на английском языке) или свяжитесь с нами по email для выпуска продуктивной лицензии. Для подготовки лицензии потребуется bundle id. Есть два способа добавить лицензию в проект:

  1. Переименуйте файл в forensics.license и поместите его в проект. Прописывать путь в этом случае не нужно.

  2. Обновление лицензии для уже работающего приложения или в том случае, если вы хотите держать лицензию вне проекта:

OZSDK(licenseSources: [.licenseFileName(“forensics.license”)]) { licenseData, error in
      if let error = error {
        print(error)
      }
    }

или

OZSDK(licenseSources: [.licenseFilePath(“path_to_file”)]) { licenseData, error in
      if let error = error {
        print(error)
      }
    }

LicenseSource – источник лицензии, LicenseData – информация о лицензии. В этот метод встроена проверка наличия активной лицензии, если такая лицензия есть – будет использоваться она, а не та, путь к которой вы указали. Для принудительной замены лицензии используйте метод setLicense.

Если при обработке лицензии возникнут ошибки, вы получите сообщение с описанием этих ошибок. Если ошибок нет, система выведет данные о лицензии. Вы также можете запросить эти данные с помощью OZSDK.licenseData.

Возможные ошибки лицензии

Сообщение об ошибке
Что делать

License error. License at (your_URI) not found

Отсутствует файл лицензии. Проверьте наименование и путь к файлу.

License error. Cannot parse license from (your_URI), invalid format

Файл лицензии поврежден. Пожалуйста, отправьте его нам по электронной почте.

License error. Bundle company.application.id is not in the list allowed by license (bundle.id1, bundle.id2)

Идентификатор приложения отсутствует в списке разрешенных для данной лицензии идентификаторов. Проверьте написание, если все корректно, нужна новая лицензия.

License error. Current date yyyy-mm-dd hh:mm:ss is later than license expiration date yyyy-mm-dd hh:mm:ss

Срок действия лицензии истек. Пожалуйста, свяжитесь с нами.

License is not initialized.

Лицензия не устанавливалась. Добавьте лицензию в проект.

Выполнение проверок

Если наш SDK используется только для съемки, пропустите этот шаг.

Чтобы выполнить проверку, нужно загрузить в систему медиафайлы, а затем запустить для них анализы.

Как интерпретировать результаты анализов, описано здесь: Типы анализов.

Пример:

let analysisRequest = AnalysisRequestBuilder()

// создайте анализы
let analysis = Analysis.init(
    media: mediaToAnalyze, // mediaToAnalyze – массив объектов OzMedia 
    type: .quality, // типы анализов перечислены в методах iOS SDK
    mode: .serverBased // .onDevice для анализа на устройстве
)
analysisRequest.addAnalysis(analysis)

// initiate the analyses
analysisRequest.run(
    statusHandler: { state in }, // добавьте обработчик шагов сценария
    errorHandler: { _ in } 
) { result in
          // ваш обработчик результата
  }

Для удаления медиафайлов после выполнения всех проверок используйте метод clearTempDirectory.

Добавление метаданных

Для добавления метаданных используйте метод AnalysisRequest.addFolderMeta.

let analysis = Analysis.init(media: mediaToAnalyze, type: .quality, mode: .serverBased)
var folderMeta: [String: Any] = ["key1": "value1"]
analysisRequest.addFolderMeta(folderMeta)
...

Извлечение лучшего кадра

В структуре Analysis можно передать дополнительные параметры, например, для извлечения на сервере лучшего кадра.

let analysis = Analysis.init(media: mediaToAnalyze, type: .quality, mode: .serverBased, params: [“extract_best_shot” : true])

Использование медиафайла, снятого не нашим SDK

Чтобы использовать медиафайлы, снятые не Oz iOS SDK, укажите путь к ним в структуре OzMedia (полеbestShotURL):

let referenceMedia = OZMedia.init(movement: .selfie,
                  mediaType: .movement,
                  metaData: ["meta":"data"],
                  videoURL: nil,
                  bestShotURL: imageUrl,
                  preferredMediaURL: nil,
                  timestamp: Date())

Добавление медиафайлов в определенную папку

Для добавления медиафайлов в определенную папку используйте метод addFolderId:

let analysis = Analysis.init(media: mediaToAnalyze, type: .quality, mode: .serverBased)
analysisRequest.addFolderId(IdRequired)
здесь
сайте
электронной почте
здесь
Подключите
режим анализа на устройстве
здесь
Здесь
здесь
Методы и поля iOS SDK
ссылке

Мастер-лицензия для Android

Мастер-лицензия – это оффлайн-лицензия, с которой можно использовать мобильные SDK без ограничений по bundle_id, в отличие от обычных лицензий. Для получения мастер-лицензии нужно создать пару ключей, как описано ниже. Отправьте нам публичный ключ по электронной почте, и вскоре после этого мы отправим вам мастер-лицензию. Вашему приложению нужно будет подписать свой bundle_id приватным ключом. Мобильные SDK проверяют подпись с помощью публичного ключа из мастер-лицензии. Действие таких лицензий ограничено по времени.

Генерация ключей

В этом разделе описано, как создавать приватный и публичный ключи.

Создание приватного ключа

Чтобы создать приватный ключ, последовательно запустите следующие команды:

Вы получите два файла:

  • privateKey.der – приватный ключ .der;

  • privateKey.txt – privateKey.der в кодировке base64. Содержимое этого файла используется в качестве подписи bundle_id хостового приложения.

Спецификация команд OpenSSL:

Создание публичного ключа

Чтобы создать публичный ключ, запустите команду:

Вы получите публичный ключ publicKey.pub. Отправьте его нам по электронной почте. В ответ мы пришлем вам лицензию.

Интеграция SDK

Инициализация SDK:

Для Android 6.0 (API 23) и старше:

  1. Добавьте зависимость implementation 'com.madgag.spongycastle:prov:1.58.0.0';

  2. Перед созданием подписи вызовите Security.insertProviderAt(org.spongycastle.jce.provider.BouncyCastleProvider(), 1)

Перед инициализацией SDK создайте закодированную base64 подпись для bundle_id хостового приложения с помощью приватного ключа.

Пример создания подписи:

Пример подписи для com.ozforensics.liveness.demo

Внимание: данная подпись не соответствует паре ключей, приведенной выше.

Передайте подпись как параметр masterLicenseSignature во время инициализации SDK.

Если подпись невалидна, инициализация продолжится по стандартной схеме: проверка включенных в лицензию bundle_id.

Съемка видео

Для старта записи видео используется метод startActivityForResult:

actions – перечень при записи видео.

Для представления Fragment код приведен ниже. LivenessFragment – для экрана Liveness.

Для корректной работы лицензии мы рекомендуем сначала инициализировать SDK, и только потом вызывать открытие экрана Liveness.

Для получения результатов записи видео используется метод onActivityResult:

  • sdkMediaResult – объект с результатами записи видео () для дальнейшего использования при взаимодействии с Oz API.

  • sdkErrorString – описание в случае их возникновения.

Если наш SDK используется только для съемки, пропустите шаг "Выполнение проверок".

Если пользователь прервет запись видео (закроет экран), resultCode примет значение Activity.RESULT_CANCELED.

Пример кода для обработки:

Мастер-лицензия для iOS

Мастер-лицензия – это оффлайн-лицензия, с которой можно использовать мобильные SDK без ограничений по bundle_id, в отличие от обычных лицензий. Для получения мастер-лицензии нужно создать пару ключей, как описано ниже. Отправьте нам публичный ключ по электронной почте, и вскоре после этого мы отправим вам мастер-лицензию. Вашему приложению нужно будет подписать свой bundle_id приватным ключом. Мобильные SDK проверяют подпись с помощью публичного ключа из мастер-лицензии. Действие таких лицензий ограничено по времени.

Генерация ключей

В этом разделе описано, как создавать приватный и публичный ключи.

Создание приватного ключа

Чтобы создать приватный ключ, последовательно запустите следующие команды:

Вы получите два файла:

  • privateKey.der – приватный ключ .der;

  • privateKey.txt – privateKey.der в кодировке base64. Содержимое этого файла используется в качестве подписи bundle_id хостового приложения.

Спецификация команд OpenSSL:

Создание публичного ключа

Чтобы создать публичный ключ, последовательно запустите следующие команды:

Вы получите публичный ключ publicKey.pub. Отправьте его нам по электронной почте. В ответ мы пришлем вам лицензию.

Интеграция SDK

Инициализация SDK:

Установка лицензии:

Перед инициализацией SDK создайте закодированную base64 подпись для bundle_id хостового приложения с помощью приватного ключа.

Пример создания подписи:

Пример подписи для com.ozforensics.liveness.demo

NcdfzExUuQcdSxdY3MUVp4rUGnJTfeTGh/EN0hqiDUSadxf9jhaYe3EHmBPb+DafWrpvP6h6ZON3fHZcqqlykpWtVlPNr7ZpchPJXgHSdIOetKjPxYWh8xrt0NUSzm9Mymv1vz7UUdLiPFXDbanAedkg4YOX8uVJjfP8gb+suLdeTE3CHm+fdK5IVMP1SMu0XsBiiWBtVZp15l6tz7fDv+frr5kCr8I/LAHo6pCHBtzsXUiYw6ylrU/PHI1QYuyKK96iTxBt3gU+/MrfHl2DHLief3Fs10m3doJmTPizwWi/8h6fvq+6ZZlV/q4S2uPE3gpQZrZe2u3FuSE8gEgVoA==

Передайте подпись как параметр masterLicenseSignature во время инициализации SDK или установки лицензии.

Если подпись невалидна, инициализация продолжится по стандартной схеме: проверка включенных в лицензию bundle_id.

Выполнение проверок

Если наш SDK используется только для съемки, пропустите этот шаг.

Чтобы выполнить проверку, нужно загрузить в систему медиафайлы, а затем запустить для них анализы.

Как интерпретировать результаты анализов, описано здесь: .

Пример работы:

Для удаления медиафайлов после выполнения всех проверок используйте метод clearActionVideos.

Добавление метаданных

Для добавления метаданных используйте метод addFolderMeta.

Извлечение лучшего кадра

В структуре Analysis можно передать дополнительные параметры, например, для извлечения на сервере лучшего кадра.

Использование медиафайла, снятого не нашим SDK

Чтобы использовать медиафайлы, снятые не Oz Android SDK, укажите путь к ним в структуре :

Добавление медиафайлов в определенную папку

Для добавления медиафайлов в определенную папку используйте метод setFolderId:

Настройка iOS SDK

Настройка интерфейса

Чтобы настроить интерфейс Oz Liveness, воспользуйтесь OZCustomization. Полный список полей находится .

Обратите внимание: методы настройки интерфейса необходимо вызывать перед методами, запускающими съемку видео.

openssl genpkey -algorithm RSA -outform DER -out privateKey.der -pkeyopt rsa_keygen_bits:2048
# for MacOS
base64 -i privateKey.der -o privateKey.txt
# for Linux 
base64 -w 0 privateKey.der > privateKey.txt
openssl rsa -pubout -in privateKey.der -out publicKey.pub
fun init(
    context: Context,
    licenseSources: List<LicenseSource>,
    masterLicenseSignature: String,
    statusListener: StatusListener<LicensePayload>? = null,
 )
private fun getMasterSignature(): String {
    Security.insertProviderAt(org.spongycastle.jce.provider.BouncyCastleProvider(), 1)

    val privateKeyBase64String = "содержимое файла privateKey.txt"

    val sig = Signature.getInstance("SHA512WithRSA")
    val keySpec = PKCS8EncodedKeySpec(Base64.decode(privateKeyBase64String, Base64.DEFAULT))
    val keyFactory = KeyFactory.getInstance("RSA")
    sig.initSign(keyFactory.generatePrivate(keySpec))
    sig.update(packageName.toByteArray(Charsets.UTF_8))
    return Base64.encodeToString(sig.sign(), Base64.DEFAULT).replace("\n", "")
 }
KohJ1rsUgLMzZHpHGAZDK2efHPnMj9tw9VIedBLvyZt0B2JH3SWfJLJ8X6JNz3bR2sce6PR2wdEIFln0r1pUnD+6WBCgexKIHAv7esiRVQZoZOEANDBwDvJVv73H/0qL2LGlhxKzbBg5CxGPClTBQdLo1P+7HsTXHHG/Hf6m3rdu1OUeGXVPoaS2NzE8kiRH6gb8Nhr7PBLTUeMKTeLoiX13hvwjOqhV1ANhgS97T4hC2+ZilZt4RektgRY/+fGmWnOqErNeYuz/WSInfaJS0YEWhJW3gXKPjdCzNGIBIqbxaFSjU46wu/alh2+tBRFnrYFl1dRQVcTlW0VwwZHcug==
https://www.openssl.org/docs/man1.1.1/man1/openssl-pkcs8.html
openssl genpkey -algorithm RSA -outform DER -out privateKey.der -pkeyopt rsa_keygen_bits:2048
# for MacOS
base64 -i privateKey.der -o privateKey.txt
# for Linux 
base64 -w 0 privateKey.der > privateKey.txt
openssl rsa -pubout -in privateKey.pem -out publicKey.pub
base64 -w 0 publicKey.pub > publicKey.txt
OZSDK(licenseSources: [LicenseSource], masterLicenseSignature: String? = nil, completion: @escaping ((LicenseData?, LicenseError?) -> Void))
setLicense(licenseSource: LicenseSource, masterLicenseSignature: String? = nil)
private func getSignature() -> String? {
    let privateKeyBase64String = "содержимое файла privateKey.txt"
 
    guard let data = Data(base64Encoded: privateKeyBase64String, options: [.ignoreUnknownCharacters]) else {
      return nil
    }
     
    let sizeInBits = data.count * 8
    let keyDict: [CFString: Any] = [
      kSecAttrKeyType: kSecAttrKeyTypeRSA,
      kSecAttrKeyClass: kSecAttrKeyClassPrivate,
      kSecAttrKeySizeInBits: NSNumber(value: sizeInBits)
    ]
     
    var error: Unmanaged<CFError>?
    guard let secKey = SecKeyCreateWithData(data as CFData, keyDict as CFDictionary, &error) else {
      return nil
    }
     
    guard let bundleID = Bundle.main.bundleIdentifier else {
      return nil
    }
    guard let signature = SecKeyCreateSignature(secKey,
                          .rsaSignatureMessagePKCS1v15SHA512,  // Это критично!!!!
                          Data(bundleID.utf8) as CFData,
                          &error) else {
      return nil
    }
    return (signature as Data).base64EncodedString()
  }
https://www.openssl.org/docs/man1.1.1/man1/openssl-pkcs8.html
// параметры настройки верхней панели
let toolbarCustomization = ToolbarCustomization(
   closeButtonIcon: UIImage(named: "example"),
   closeButtonColor: .black.withAlphaComponent(0.8),
   titleText: "",
   titleFont: .systemFont(ofSize: 18, weight: .regular),
   titleColor: .gray,
   backgroundColor: .lightGray)

// параметры настройки текста подсказки
let centerHintCustomization = CenterHintCustomization(textColor: .white,
    textFont: .systemFont(ofSize: 22, weight: .regular),
    verticalPosition: 42,
    backgroundColor: UIColor.init(hexRGBA: "1C1C1E8F")!,
    hideTextBackground: false,
    backgroundCornerRadius: 14)
   
// параметры настройки анимации подсказки
let hintAnimationCustomization = HintAnimationCustomization(
    hideAnimation: false,
    animationIconSize: 80,
    toFrameGradientColor: UIColor.red)

// параметры настройки рамки вокруг лица
let faceFrameCustomization = FaceFrameCustomization(
   strokeWidth: 4,
   strokeFaceAlignedColor: .green,
   strokeFaceNotAlignedColor: .red,
   geometryType = .rect(cornerRadius: 10),
   strokePadding: 3)

// параметры настройки текста версии SDK
let versionCustomization = VersionLabelCustomization(
   textFont: .systemFont(ofSize: 13, weight: .regular),
   textColor: .gray
)

// параметры настройки фона за рамкой
let backgroundCustomization = BackgroundCustomization(
   backgroundColor: .lightGray
)

// параметры настройки защиты от мошенников
let antiscamCustomization: AntiscamCustomization = AntiscamCustomization(
  customizationEnableAntiscam: false,
  customizationAntiscamTextMessage: "Face recognition",
  customizationAntiscamTextFont: UIFont.systemFont(ofSize: 15, weight: .semibold),
  customizationAntiscamTextColor: UIColor.black,
  customizationAntiscamBackgroundColor: UIColor.init(hexRGBA: "F2F2F7FF")!,
  customizationAntiscamCornerRadius: 18,
  customizationAntiscamFlashColor: UIColor.init(hexRGBA: "FF453AFF")!)

// параметры настройки логотипа,
// если лицензия предусматривает возможность его изменения
let logoCustomization = LogoCustomization(image: UIImage(), size: CGSize(width: 100, height: 100))

OZSDK.customization = Customization(toolbarCustomization: toolbarCustomization,
                   antiscamCustomization: antiscamCustomization,
                   centerHintCustomization: centerHintCustomization,
                   hintAnimationCustomization: hintAnimationCustomization,
                   faceFrameCustomization: faceFrameCustomization,
                   versionCustomization: vesrionCustomization,
                   backgroundCustomization: backgroundCustomization,
                  logoCustomization: logoCustomization)
здесь
when (resultCode) {
    Activity.RESULT_CANCELED -> *USER CLOSED THE SCREEN*
    OzLivenessResultCode.SUCCESS -> {
        val sdkMediaResult = OzLivenessSDK.getResultFromIntent(data)
        *SUCCESS*
    }
    else -> {
        val errorMessage = OzLivenessSDK.getErrorFromIntent(data)
        *FAILURE*
    }
}
действий пользователя
Fragment
OzAbstractMedia
ошибок
val intent = OzLivenessSDK.createStartIntent(listOf(OzAction.Smile, OzAction.Blank))
startActivityForResult(intent, REQUEST_CODE)
List<OzAction> actions  = Arrays.asList(OzAction.Smile, OzAction.Scan);
Intent intent = OzLivenessSDK.createStartIntent(actions);
startActivityForResult(intent, REQUEST_CODE);
childFragmentManager.beginTransaction()
    .replace(R.id.content, LivenessFragment.create(actions))
    .commit()
// подписка на результат Fragment
childFragmentManager.setFragmentResultListener(OzLivenessSDK.Extra.REQUEST_CODE, this) { _, result ->
    when (result.getInt(OzLivenessSDK.Extra.EXTRA_RESULT_CODE)) {
        OzLivenessResultCode.SUCCESS -> { /* запуск анализа */ }
        else -> { /* вывод ошибки */ }  
    }
}
getSupportFragmentManager().beginTransaction()
        .replace(R.id.content, LivenessFragment.Companion.create(actions, null, null, false))
        .addToBackStack(null)
        .commit();
// подписка на результат Fragment
getSupportFragmentManager().setFragmentResultListener(OzLivenessSDK.Extra.REQUEST_CODE, this, (requestKey, result) -> {
            switch (result.getInt(OzLivenessSDK.Extra.EXTRA_RESULT_CODE)) {
                case OzLivenessResultCode.SUCCESS: {/* запуск анализа */}
                default: {/* вывод ошибки */}
            }
        });
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE) {
      sdkMediaResult = OzLivenessSDK.getResultFromIntent(data)
      sdkErrorString = OzLivenessSDK.getErrorFromIntent(data)
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        List<OzAbstractMedia> sdkMediaResult = OzLivenessSDK.INSTANCE.getResultFromIntent(data);
        String sdkErrorString = OzLivenessSDK.INSTANCE.getErrorFromIntent(data);
    }
    .addFolderMeta(
        mapOf(
            "key1" to "value1",
            "key2" to "value2"
        )
    )
.addFolderMeta(Collections.singletonMap("key", "value")) 
mapOf("extract_best_shot" to true)
       val file = File(context.filesDir, "media.mp4") // замените context.filesDir на context.getExternalFilesDir(null) для внешнего хранилища смартфона
       val media = OzAbsractMedia.OzVideo(OzMediaTag.VideoSelfieSmile, file.absolutePath)
    .setFolderId(folderId)
Типы анализов
OzAbstractMedia
analysisCancelable = AnalysisRequest.Builder()
// mediaToAnalyze – массив объектов OzAbstractMedia
    .addAnalysis(Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaToAnalyze))// ON_DEVICE для анализа на устройстве
    .build()
//запуск анализов и установка обработчиков
    .run(object : AnalysisRequest.AnalysisListener {
        override fun onStatusChange(status: AnalysisRequest.AnalysisStatus) { handleStatus(status) //или ваш обработчик шагов сценария 
        }
        override fun onSuccess(result: RequestResult) {
            handleResults(result) //или ваш обработчик результата
        }
        override fun onError(error: OzException) { handleError(error) //или ваш обработчик ошибок 
        }
    })
analysisCancelable = new AnalysisRequest.Builder()
//mediaToAnalyze – массив объектов OzAbstractMedia
        .addMedia(mediaToAnalyze) 
        .addAnalysis(new Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaToAnalyze)) //ON_DEVICE для анализа на устройстве
        .build()
//запуск анализов и установка обработчиков
        .run(new AnalysisRequest.AnalysisListener() { 
            @Override
            public void onSuccess(@NonNull RequestResult list) { handleResults(list); } //или ваш обработчик результата
            @Override
            public void onError(@NonNull OzException e) { handleError(e); } //или ваш обработчик ошибок
            @Override
            public void onStatusChange(@NonNull AnalysisRequest.AnalysisStatus analysisStatus) { handleStatus(analysisStatus); } //или ваш обработчик шагов сценария 
        });

Журнал изменений

8.19.0 – 24.11.2025

  • Android: Исправили ошибку, из-за которой при запуске Fragment могло появляться предупреждение.

  • Android: SDK больше не вылетает при вызове copyPlane.

  • Android: Если при гибридном анализе вы выбираете отправку сжатых видео, оригинальные видео больше не сохраняются вместе со сжатыми.

  • iOS: Исправили анимацию жеста Сканирование.

  • iOS: Исправили ошибку, при которой SDK при инициализации в дебаг-режиме не вызывал completion.

  • Повысили безопасность.

8.18.1 – 10.09.2025

  • initSDK в дебаг-режиме для iOS теперь работает корректно.

8.18.0 – 26.08.2025

  • Добавили возможность выполнять анализ для конкретной папки с использованием ее идентификатора.

  • Исправили ошибку в коде примера.

  • Подсказка для жеста Сканирование теперь озвучивается корректно.

  • При попытке удалить референтное фото SDK теперь запрашивает подтверждение.

  • Исправили ошибку с темным фоном при запуске SDK.

  • Исправили ошибку, из-за которой при биометрическом анализе одно из изображений переворачивалось.

  • Исправили несколько ошибок, возникавших во время анализов на устройстве и при гибридном анализе.

  • Android: теперь поддерживаем Google Dynamic Feature Delivery.

  • Android: исправили ошибку, из-за которой SDK мог вылететь при закрытии экрана съемки.

  • iOS: исправили ошибку с интеграцией через Swift UI.

  • iOS: в соответствии с требованиями Apple обновили Xcode до версии 16.

  • Повысили безопасность и обновили телеметрию.

8.16.0 – 30.04.2025

  • Обновили логику авторизации.

  • Улучшили логику озвучивания подсказок.

  • Обновления безопасности.

  • Android: валидацию видео – опцию, которая запускает запись видео заново, если получившийся файл состоит из 3 кадров и менее – теперь можно отключить.

  • iOS: SDK теперь сжимает медиафайлы, если их размер превышает 10 МБ.

  • iOS: жесты с движениями головы теперь обрабатываются корректно.

  • iOS: в соответствии с требованиями Apple обновили Xcode до версии 16.

8.14.0 – 17.12.2024

  • Обновления безопасности и телеметрии.

  • Подсказки SDK и элементы управления интерфейса могут озвучиваться в соответствии с требованиями WCAG.

  • Упростили прохождение проверки для жестов, включающих движение головы.

  • Android: сжатие больших видео теперь происходит на этапе закрытия экрана Liveness.

  • Android: исправили ошибку, из-за которой изображение с закрытыми глазами могло быть выбрано в качестве лучшего кадра.

  • Android: исправили проблемы с кодеками, появлявшиеся на некоторых моделях смартфонов.

  • Android: исправили ошибку, из-за которой некоторые записанные SDK видео были зелеными.

  • iOS: добавили поддержку Xcode 16.

  • iOS: при использовании основной (задней) камеры яркость экрана теперь не меняется.

  • iOS: исправили ошибку записи видео, появлявшуюся на некоторых моделях смартфонов.

8.12.0 – 11.10.2024

  • Метод executeLiveness больше не используется. Съемка теперь запускается с помощью метода startLiveness.

  • Обновили код для получения результата съемки.

  • Обновления безопасности и телеметрии.

8.8.2 – 27.06.2024

  • При попытке передать пустую строку в качестве аргумента для методов addFolderId (iOS) и setFolderID (Android)теперь показывается информативная ошибка.

  • Android: исправили ошибку с бесконечно крутящимся спиннером, который появлялся при переключении пользователя на другое приложение во время прохождения проверки Liveness.

  • Android: исправили несколько ошибок, появлявшихся только на определенных моделях смартфонов.

  • Обновления безопасности и телеметрии.

8.6.0 – 15.04.2024

  • Android: улучшили модель Liveness для проверки на устройстве.

  • Android: обновления безопасности.

  • iOS: синхронизировали с Android сообщения, которые SDK показывает после загрузки медиафайла.

  • iOS: исправили баг с задержками запуска анализа, которые иногда возникали для анализа по одному кадру.

8.5.0 – 20.03.2024

  • Длительность жеста Селфи теперь можно менять (размер видеофайла также изменится).

  • Убрали паузу после жеста Сканирование.

  • Обновления безопасности и журналирования.

  • Android: если размер записанного видеофайла больше 10 Мбайт, видео будет сжато.

8.4.0 – 11.01.2024

  • Android: обновили модель Liveness для проверки на устройстве.

  • iOS: изменили поведение для отсутствующих переводов при добавлении новых ключей в локализацию: теперь вместо названия ключа показывается текст на языке по умолчанию (английском).

  • Исправили ошибки.

8.3.0 – 30.11.2023

  • Добавили возможность использования мастер-лицензии, которая работает с любым bundle_id.

  • Android: исправили ошибку со сжатием видео при гибридном анализе, которая возникала на некоторых моделях телефонов.

  • iOS: исправили ошибку с мигающим фоном при съемке.

8.2.0 – 17.11.2023

  • Выпущена первая версия.

oz-forensics / oz-liveness-android · GitLabGitLab
Files · main · oz-forensics / Oz Forensics Public projects / oz-liveness-ios-sample · GitLabGitLab

Установка и использование плагина для Flutter

Образец кода для Flutter вы можете найти здесь.

Установка и лицензирование

Добавьте строки из блока ниже в pubspec.yaml проекта, где планируется использовать плагин.

  ozsdk:
    git:
      url: https://gitlab.com/oz-forensics/oz-mobile-flutter-plugin.git
      ref: '8.8.2'

Поместите файл лицензии (например, license.json или forensics.license) в папку Flutter application/assets. В pubspec.yaml добавьте asset:

assets
  - assets/license.json // название файла лицензии должно совпадать с названием из папки assets

Для Android укажите путь к репозиторию Oz в /android/build.gradle, раздел allprojects → repositories:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url ‘https://ozforensics.jfrog.io/artifactory/main’ } // ссылка на репозиторий
    }
}

Для Flutter 8.24.0 и новее или Android Gradle plugin 8.0.0 и новее добавьте строку в android/gradle.properties:

android.nonTransitiveRClass=false

Минимальная версия SDK – 21 или выше:

defaultConfig {
  ...
  minSDKVersion 21
  ...
}

Для iOS в Runner → Info → Deployment target → iOS Deployment Target установите версию 13 или выше.

В ios/Podfile закомментируйте строку use_frameworks! (#use_frameworks!).

Начало работы с Flutter

Инициализация SDK

Для инициализации вызовите метод init. Название и путь к файлу лицензии должны совпадать с теми, которые вы указали в pubspec.yaml (например, assets/license.json).

await OZSDK.initSDK([<% название файла лицензии и путь к нему %>]);

Подключение SDK к API

Для подключения используйте полученные от нас логин, пароль и адрес API сервера.

await OZSDK.setApiConnectionWithCredentials(<login>, <password>, <host>);

На стадии коммерческого использования вместо логина и пароля мы рекомендуем использовать токен доступа, который можно получить с помощью метода API /api/authorize/auth.

 await OZSDK.setApiConnectionWithToken(token, host);

По умолчанию логи сохраняются вместе с данными по анализам. Если вы планируете хранить логи отдельно от этих данных, настройте отдельное подключение для телеметрии:

await OZSDK.setEventConnectionWithCredentials(<login>, <password>, <host>);

или

await OZSDK.setEventConnectionWithToken(<token>, <host>);

Съемка видео

Для запуска съемки и получения результата вызовите метод startLiveness:

await OZSDK.startLiveness(<actions>, <use_main_camera>);

Параметр

Тип

Описание

actions

List<VerificationAction>

Действия на видео

use_main_camera

Boolean

Если установлено True, используется основная камера, False – передняя

Обратите внимание: для версий до 8.11 включительно метод для запуска называется executeLiveness. Он возвращает результат съемки.

Для получения результата съемки в версии 8.12 и новее подпишитесь на livenessResult, как показано ниже:

class Screen extends StatefulWidget {
  static const route = 'liveness';

  const Screen({super.key});

  @override
  State<Screen> createState() => _ScreenState();
}

class _ScreenState extends State<Screen> {
  late StreamSubscription<List<Media>> _subscription;

  @override
  void initState() {
    super.initState();

    // подписка на результат liveness
    _subscription = OZSDK.livenessResult.listen(
      (List<Media> medias) {
          // содержит медиафайл liveness
      },
      onError: (Object error) {
        // обработка ошибок, чаще всего PlatformException
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    // пропущено для сокращения образца кода
  }

  void _startLiveness() async {
    // запустите экран съемки с помощью метода startLiveness
    OZSDK.startLiveness(<list of actions>);
  }

  @override
  void dispose() {
    // cancel subscription
    _subscription.cancel();
    super.dispose();
  }
}

Выполнение проверок

Размещенный ниже код поможет вам запустить анализы.

Создайте объект Analysis:

List<Analysis> analysis = [ Analysis(Type.quality, Mode.serverBased, <media>, {}), ];

Запустите созданный анализ:

final analysisResult = await OZSDK.analyze(analysis, [], {});

Если вы хотите запустить анализ для конкретной папки, укажите ее идентификатор:

final analysisResult = await OZSDK.analyze(analysis, folderID, [], {});

Результат анализа запишется в массив объектов analysisResult.

Для анализа медиафайла, полученного не нашим SDK, используйте следующий код:

media = Media(FileTypedocumentPhoto, VerificationAction.oneShot, “photo_selfie”, null, <pat

Итоговый блок кода (пример):

// замените VerificationAction.blank, если у вас используется другой жест Livenes
final cameraMedia = await OZSDK.executeLiveness([VerificationAction.blank], use_main_camera);

final analysis = [
  Analysis(Type.quality, Mode.serverBased, cameraMedia, {}),
];

final analysisResult = await OZSDK.analyze(analysis, [], {});
// замените VerificationAction.blank, если у вас используется другой жест Liveness
final cameraMedia = await OZSDK.executeLiveness([VerificationAction.blank], use_main_camera);
final biometryMedia = [...cameraMedia];
biometryMedia.add(
  Media(
    FileType.documentPhoto,
    VerificationAction.blank,
    MediaType.movement,
    null,
    <путь к референсному фото>,
    null,
    null,
    MediaTag.photoSelfie,
  ),
);

final analysis = [
  Analysis(Type.quality, Mode.serverBased, cameraMedia, {}),
  Analysis(Type.biometry, Mode.serverBased, biometryMedia, {}),
];

final analysisResult = await OZSDK.analyze(analysis, [], {});

Настройка Android SDK

Настройки Oz Mobile SDK

Применять настройки рекомендуется при старте приложения.

Настройка интерфейса Oz Mobile SDK

Чтобы настроить интерфейс Oz Liveness, воспользуйтесь UICustomization. Полный список полей находится .

По умолчанию SDK использует локаль устройства. Чтобы сменить локаль, используйте код ниже:

OzLivenessSDK.INSTANCE.getConfig().setCustomization(new UICustomization(
// параметры настройки верхней панели
new ToolbarCustomization(
    R.drawable.ib_close,
    new Color.ColorRes(R.color.white),
    R.style.Sdk_Text_Primary,
    new Color.ColorRes(R.color.white),
    R.font.roboto,
    Typeface.NORMAL,
    100, // непрозрачность текста на верхней панели (в %)
    18, // размер текста на верхней панели (в sp)
    new Color.ColorRes(R.color.black),
    60, // непрозрачность фона верхней панели (в %)
        "Liveness", // текст на верхней панели
    true // центрировать текст на верхней панели
    ),
// параметры настройки текста подсказки
new CenterHintCustomization(
    50, // положение по вертикали (в %)
    R.style.Sdk_Text_Primary,
    R.drawable.bg_center_hint_badge,
    new Color.ColorRes(R.color.color_surface),
    100, // непрозрачность фона
    14, // угловой радиус подложки
    100 // непрозрачность текста
    ),
// параметры настройки анимации подсказки
new HintAnimation(
    new Color.ColorRes(R.color.red), // цвет градиента
    80, // непрозрачность цвета градиента (в %)
    120, // размер квадрата, в который вписан значок анимации
    false // скрывать ли анимацию
    ),
// параметры настройки рамки вокруг лица
new FaceFrameCustomization(     GeometryType.RECTANGLE,
    10, // угловой радиус для прямоугольника
    new Color.ColorRes(R.color.error_red), 
    new Color.ColorRes(R.color.success_green),
    100, // непрозрачность рамки (в %)
    5, // ширина линии рамки (в dp)
    3 // отступ от рамки до области для позиционирования лица (в dp)
    ),
// параметры настройки фона за рамкой
new BackgroundCustomization(
    new Color.ColorRes(R.color.black),
    60 // непрозрачность фона (в %)
    ),
// параметры настройки текста версии SDK
new VersionTextCustomization(
    R.style.Sdk_Text_Primary,
    R.font.roboto,
    12, // размер шрифта текста версии (в sp)
    new Color.ColorRes(R.color.white),
    100 // непрозрачность текста версии (в %)
    ),
// параметры настройки дополнительной защиты от мошенничества
new AntiScamCustomization(
     "Recording .. ",
    R.font.roboto,
    12,
    new Color.ColorRes(R.color.text_color),
    100,
    R.style.Sdk_Text_Primary,
    new Color.ColorRes(R.color.color_surface),
    100,
    14,
    new Color.ColorRes(R.color.green)
    ),
// параметры настройки логотипа
new LogoCustomization(
    new Image.Drawable(R.drawable.ic_logo),
    new Size(176, 64)
    )
 )
);
OzLivenessSDK.config.localizationCode = OzLivenessSDK.OzLocalizationCode.RU
OzLivenessSDK.INSTANCE.getConfig().setLocalizationCode(OzLivenessSDK.OzLocalizationCode.RU);
здесь
// подключение к серверу API
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(HOST, TOKEN))
// настройка количества попыток обнаружить действие
OzLivenessSDK.config.attemptSettings = attemptSettings 
// возможность отображения дополнительной информации для отладки (чтобы увидеть данные, нажмите на номер версии SDK)
OzLivenessSDK.config.allowDebugVisualization = allowDebugVisualization 
// настройки журналирования
OzLivenessSDK.config.logging = ozLogging 
OzConfig config = OzLivenessSDK.INSTANCE.getConfig();
// подключение к серверу API
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(HOST, TOKEN));
// настройка количества попыток обнаружить действие
config.setAttemptSettings(attemptSettings); 
// возможность отображения дополнительной информации для отладки (чтобы увидеть данные, нажмите на номер версии SDK)
config.setAllowDebugVisualization(allowDebugVisualization); 
// настройки журналирования
config.setLogging(ozLogging);
OzLivenessSDK.config.customization = UICustomization(
    // параметры настройки верхней панели
    toolbarCustomization = ToolbarCustomization(
        closeIconRes = R.drawable.ib_close,
        closeIconTint = Color.ColorRes(R.color.white),
        titleTextFont = R.font.roboto,
        titleTextSize = 18,
        titleTextAlpha = 100,
        titleTextColor = Color.ColorRes(R.color.white),
        backgroundColor = Color.ColorRes(R.color.black),
        backgroundAlpha = 60,
        isTitleCentered = true,
        title = "Analysis"
    ),
    // параметры настройки текста подсказки
    centerHintCustomization = CenterHintCustomization(
        textFont = R.font.roboto,
        textColor = Color.ColorRes(R.color.text_color),
        textSize = 20,
        verticalPosition = 50,
        textStyle = R.style.Sdk_Text_Primary,
        backgroundColor = Color.ColorRes(R.color.color_surface),
        backgroundOpacity = 56,
        backgroundCornerRadius = 14,
        textAlpha = 100
    ),
    // параметры настройки анимации подсказки
    hintAnimation = HintAnimation(
    hintGradientColor = Color.ColorRes(R.color.red),
    hintGradientOpacity = 80,
    animationIconSize = 120,
    hideAnimation = false
),
    // параметры настройки рамки вокруг лица
    faceFrameCustomization = FaceFrameCustomization(
        geometryType = GeometryType.Rectangle(10), // 10 – радиус скругления углов
        strokeDefaultColor = Color.ColorRes(R.color.error_red),
        strokeFaceInFrameColor = Color.ColorRes(R.color.success_green),
        strokeAlpha = 100,
        strokeWidth = 5,
        strokePadding = 3,
    ),
    // параметры настройки фона за рамкой
    backgroundCustomization = BackgroundCustomization(
        backgroundColor = Color.ColorRes(R.color.black),
        backgroundAlpha = 60
    ),
    // параметры настройки текста версии SDK
    versionTextCustomization = VersionTextCustomization(
        textFont = R.font.roboto,
        textSize = 12,
        textColor = Color.ColorRes(R.color.white),
        textAlpha = 100,
    ),
    // параметры настройки дополнительной защиты от мошенничества
    antiScamCustomization = AntiScamCustomization(
        textMessage = "",
        textFont = R.font.roboto,
        textSize = 14,
        textColor = Color.ColorRes(R.color.text_color),
        textAlpha = 100,
        backgroundColor = Color.ColorRes(R.color.color_surface),
        backgroundOpacity = 100,
        cornerRadius = 20,
        flashColor = Color.ColorRes(R.color.green)
    ),
    // параметры настройки логотипа,
    // если лицензия предусматривает возможность его изменения
    logoCustomization = LogoCustomization(
        image = Image.Drawable(R.drawable.ic_logo),
        size = Size(176, 64),
    )
)
Logo
Logo

Журнал изменений

Журнал изменений для iOS.

8.21.0 – 21.11.2025

  • Исправили ошибку, из-за которой SDK на некоторых устройствах иногда мог не реагировать на действия пользователя.

  • Обновили SDK в рамках подготовки к внедрению новой функциональности, связанной с безопасностью.

8.20.0 – 17.10.2025

  • Исправили ошибку, из-за которой SDK мог вылететь после съемки референтного фото с помощью камеры во время анализа Biometry.

  • Повысили безопасность.

8.19.0 – 23.09.2025

  • Исправили анимацию жеста Сканирование.

  • Исправили ошибку, при которой SDK при инициализации в дебаг-режиме не вызывал completion.

  • Повысили безопасность.

8.18.2 – 22.08.2025

  • Исправили ошибку, из-за которой SDK иногда вылетал при добавлении лицензии.

8.18.1 – 06.08.2025

Настоятельно рекомендуем обновиться до этой версии.

  • Исправили ошибку с интеграцией через Swift UI.

  • SDK больше не вылетает на устройствах, где осталось мало свободного места.

  • Повысили безопасность и обновили телеметрию.

8.17.0 – 12.06.2025

  • Повысили безопасность.

8.16.2 – 22.04.2025

  • В соответствии с требованиями Apple обновили Xcode до версии 16.

8.16.1 – 09.04.2025

  • Повысили безопасность.

8.16.0 – 11.03.2025

  • Обновили логику авторизации.

  • Улучшили логику озвучивания подсказок.

  • SDK теперь сжимает медиафайлы, если их размер превышает 10 МБ.

  • Жесты с движениями головы теперь обрабатываются корректно.

  • Повысили безопасность.

8.15.0 – 30.12.2024

  • Добавлен правильный порядок фокусировки для VoiceOver при включенной антискам-подсказке.

  • Добавлена ​​публичная настройка extract_action_shot в Демо Приложении.

  • Исправили ошибки.

  • Повысили безопасность.

8.14.0 – 03.12.2024

  • Обновления доступности для пользователей с инвалидностью согласно требованиям WCAG: можно настроить озвучивание подсказок SDK и элементов управления.

  • Упростили прохождение проверки для жестов, включающих движение головы.

  • Исправили незначительные ошибки.

  • Обновили телеметрию.

8.13.0 – 11.11.2024

  • При использовании основной (задней) камеры яркость экрана теперь не меняется.

  • Исправили ошибку записи видео, появлявшуюся на некоторых моделях смартфонов.

  • Повысили безопасность и обновили телеметрию.

8.12.2 – 24.10.2024

  • Улучшили работу SDK.

8.12.1 – 30.09.2024

  • Добавили поддержку Xcode 16.

  • Повысили безопасность и обновили телеметрию.

8.11.0 – 10.09.2024

  • Повысили безопасность.

8.10.1 – 23.08.2024

  • Исправили ошибки.

8.10.0 – 01.08.2024

  • Для работы SDK теперь нужен Xcode 15 и новее.

  • Повысили безопасность.

  • Исправили ошибки.

8.9.1 – 16.07.2024

  • Улучшили работу SDK.

8.8.3 – 11.07.2024

  • Улучшили работу SDK.

8.8.2 – 25.06.2024

  • Исправили ошибки.

8.8.1 – 25.06.2024

  • Обновили телеметрию.

8.8.0 – 18.06.2024

  • Повысили безопасность.

8.7.0 – 10.05.2024

  • Теперь вы можете установить iOS SDK через Swift Package Manager.

  • Добавили образец кода для SwiftUI.

  • При попытке передать пустую строку в качестве аргумента для метода addFolderId теперь показывается информативная ошибка.

  • Исправили ошибки.

8.6.0 – 10.04.2024

  • Синхронизировали с Android сообщения, которые SDK показывает после загрузки медиафайла.

  • Исправили баг с задержками запуска анализа, которые иногда возникали для анализа по одному кадру.

8.5.0 – 06.03.2024

  • Длительность жеста Селфи теперь можно менять (размер видеофайла также изменится).

  • Вы можете заменить логотип Oz своим, если ваша лицензия это предусматривает.

  • Убрали паузу после жеста Сканирование.

  • Обновили код в Readme.md.

  • Повысили безопасность и обновили телеметрию.

8.4.2 – 24.01.2024

  • Повысили безопасность.

8.4.0 – 09.01.2024

  • Изменили поведение для отсутствующих переводов при добавлении новых ключей в локализацию: теперь вместо названия ключа показывается текст на языке по умолчанию (английском).

  • Исправили ошибки.

8.3.3 – 11.12.2023

  • Улучшили работу механизмов лицензирования.

8.3.0 – 17.11.2023

  • Добавили возможность использования мастер-лицензии, которая работает с любым bundle_id.

  • Исправили ошибку с мигающим фоном при съемке.

8.2.1 – 11.11.2023

  • Исправили ошибки.

8.2.0 – 30.10.2023

  • Добавили в структуру Analysis поле sizeReductionStrategy. Оно определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа.

  • Сообщения для получаемых из API ошибок теперь более информативны.

  • Настройка toFrameGradientColor для кастомизации подсказки hintAnimationCustomization больше не используется. Вместо нее используйте hintGradientColor.

  • Вернули поддержку iOS 11.

8.1.1 – 09.10.2023

  • Если несколько анализов назначаются на папку одновременно, система отправляет их группой. Таким образом, выбирается “худший” результат среди всех анализов, а не последний назначенный. Прочитать про отправку анализов группой можно здесь.

  • В анализе Liveness для количественного результата теперь берется максимальный из вычисленных. Прочитать о результате можно здесь.

8.1.0 – 07.09.2023

  • Обновили модель Liveness для проверки на устройстве.

  • Добавили португальский язык (бразильский вариант).

  • Вы теперь можете добавить язык или изменить текущие переводы самостоятельно. Как это сделать, описано здесь.

  • Если медиафайл по каким-то причинам не загрузился, система теперь повторяет загрузку.

  • Добавили новый метод для получения идентификатора телеметрии (логирования): getEventSessionId.

  • Методы setPermanentAccessToken, configure и login больше не используются. Вместо них, пожалуйста, используйте метод setApiConnection.

  • Метод setLicense(from path:String) больше не используется. Вместо него, пожалуйста, используйте метод setLicense(licenseSource: LicenseSource).

  • Исправили ошибки и улучшили работу SDK.

8.0.2 – 15.08.2023

  • Исправили ошибки, улучшили работу алгоритмов SDK.

8.0.0 – 27.06.2023

  • Добавлен новый тип анализа – гибридный (сейчас работает только для Liveness). В случае спорных результатов анализа на устройстве проводится дополнительная проверка на сервере.

  • Обновлены модели для выполнения анализов на устройстве.

  • Обновили метод run.

  • Добавили новые структуры RequestStatus (статус анализа), ResultMedia (статус анализов для одного медиафайла) и RequestResult (сводный результат анализа для всех медиа).

  • Структура OzAnalysisResult больше не используется; вместо нее – обновленная структура AnalysisResult.

  • Для объекта OZMedia теперь можно добавить дополнительные теги не из списка основных.

  • Длительность видео для жеста “Селфи” снижена до 0,7 секунд, соответственно, уменьшились размер файла и время его загрузки на сервер.

  • Текст подсказки теперь может выходить за границы рамки для лица по горизонтали (для основной камеры).

  • Прекращена поддержка методов:

Удаленный метод

Замена

analyse

AnalysisRequest.run

addToFolder

uploadMedia

documentAnalyse

AnalysisRequest.run

uploadAndAnalyse

AnalysisRequest.run

runOnDeviceBiometryAnalysis

AnalysisRequest.run

runOnDeviceLivenessAnalysis

AnalysisRequest.run

addMedia

uploadMedia

7.3.0 – 06.06.2023

  • Добавили настройки для фона подсказки.

  • Добавили новые формы рамки (круг, квадрат).

  • Добавили виджет для защиты от мошенничества и набор настроек к нему. С помощью этого виджета вы можете уведомлять пользователей, что ведется съемка видео для, например, отправления заявки на кредит. Таким образом вы сможете защитить пользователей, если мошенники попытаются убедить их подтвердить такой запрос.

  • Синхронизировали значения настроек кастомизации по умолчанию с Android.

  • Добавили испанский язык.

  • iOS 11 больше не поддерживается; минимальная необходимая версия – 12.

7.2.1 – 24.05.2023

  • Исправили ошибки, связанные с проведением однокадрового анализа на стороне сервера.

7.2.0 – 18.05.2023

  • Улучшили работу алгоритмов SDK.

7.1.6 – 04.05.2023

  • Исправлен баг с серверными анализами при отсутствии видео: если по каким-то причинам видео не загрузилось в папку (например, при потере интернет-соединения), папка будет пустой – без видео и назначенных анализов.

7.1.5 – 03.04.2023

  • Улучшили работу Liveness-анализов на устройстве.

7.1.4 – 24.03.2023

  • Обновили анимацию для солнечных очков / маски.

  • Исправили ошибку с добавлением анализа.document.

7.1.2 – 21.02.2023

  • Обновили версию TensorFlow до 2.11.

  • Исправили несколько багов, в том числе ошибки биометрической проверки, возникавшие на некоторых моделях телефонов.

7.1.1 – 06.02.2023

  • Добавили возможность управлять цветом анимации.

7.1.0 – 20.01.2023

  • Обновили модель для выполнения анализов.

  • Добавили метод uploadMedia в AnalysisRequest. Метод addMedia больше не используется.

  • Исправили ошибку в жесте Комбо.

  • Добавили кнопку для сброса настроек языка и темы SDK.

  • Увеличили тайм-аут сетевых запросов до 90 с.

  • Добавили возможность управлять размером значка анимации.

  • Исправили баги.

7.0.0 – 08.12.2022

  • Значительно расширили список настроек кастомизации SDK и обновили дизайн. Если вы хотите вернуть дизайн из прошлых версий, соответствующие настройки описаны здесь.

6.7.0

  • Синхронизировали ответы методов run с Android SDK, теперь метод возвращает массив результатов анализов.

6.4.0

  • Синхронизировали нумерацию версий с Android SDK.

  • Добавили новое поле params в структуру Analysis – с его помощью можно задавать дополнительные параметры, например, для извлечения на сервере лучшего кадра. Алгоритм "лучший кадр" выбирает из видеозаписи наиболее качественный и удачный кадр с лицом.

  • Исправили ошибки локализации.

  • Поменяли жест Комбо.

  • Теперь можно запускать проверку Liveness на устройстве для анализа изображений, снятых вне SDK.

3.0.1

  • Жесты отдаления и приближения больше не поддерживаются.

3.0.0

  • Добавили новую упрощенную структуру анализа AnalysisRequest.

2.3.0

  • Добавили методы для локального анализа: runOnDeviceLivenessAnalysis и runOnDeviceBiometryAnalysis.

  • Версию для установки можно выбрать: стандартная установка дает доступ ко всем функциям, а в версии core (OzLivenessSDK/Core) отсутствует возможность делать анализы локально на устройстве.

  • Добавили универсальный метод для загрузки данных на сервер и немедленного запуска анализов: uploadAndAnalyse.

  • Дополнили процесс лицензирования: теперь лицензию можно указать при инициализации SDK. Воспользуйтесь методом OZSDK(licenseSources: [LicenseSource], completion: @escaping ((LicenseData?, LicenseError?) -> Void)), где LicenseSource – путь до лицензии, LicenseData – информация о лицензии.

  • Добавили метод setLicense для принудительной установки лицензии.

2.2.3

  • Добавили турецкий язык.

2.2.1

  • Добавили киргизский язык.

  • Добавили Completion Handler для результатов анализа.

  • Добавили в телеметрию передачу Error User Info, теперь можно узнавать подробности об ошибке, которая происходит в работе анализа.

2.2.0

  • Добавили локальные анализы – теперь анализ можно делать прямо на устройстве.

  • Добавили рамки для лица, теперь их две – овал и прямоугольник.

  • Теперь поддерживаем Xcode 12.5.1+.

2.1.4

  • Добавили конфигурацию SDK через лицензии.

2.1.3

  • Добавили жест One Shot.

  • В OZVerificationResult добавили bestShotURL (содержит изображение лучшего кадра) и preferredMediaURL (содержит медиаконтейнер с url лучшего видео для назначения анализа)

  • При запуске локальной проверки теперь можно указать тип камеры: front / back.

2.1.2

  • Авторизационные сессии теперь пролонгируются автоматически.

  • Обновили интерфейсы авторизации.

2.1.1

  • Добавили казахский язык.

  • Добавили тексты для ошибок лицензирования.

2.1.0

  • Сетевые запросы теперь можно отменить.

  • Для лицензии можно указать Bundle.

  • Добавили параметризации анализов documentAnalyse.

  • Исправили ошибки при сборках проекта. (Xcode 12.4 / Cocoapods 1.10.1).

2.0.0

  • Добавили поддержку лицензий.

  • Теперь поддерживаем Xcode 12. 11 поддерживать перестали.

  • Исправили ошибку documentAnalyse – анализы не назначались без указания analyseStates. Теперь все корректно.

  • Поправили ошибки в сборе логов.

Журнал изменений

Журнал изменений для Android.

8.22.0 – 01.12.2025

  • Исправили ошибки, из-за которых SDK мог иногда вылетать на некоторых моделях телефонов.

  • Повысили безопасность.

8.21.0 – 12.11.2025

  • Улучшили производительность SDK на некоторых устройствах.

  • Обновили SDK в рамках подготовки к внедрению новой функциональности, связанной с безопасностью.

8.20.0 – 10.10.2025

  • Исправили ошибку, из-за которой на некоторых моделях телефонов могли записываться зеленые видео.

  • Исправили ошибку с mediaId = null.

  • Повысили безопасность.

8.19.0 – 15.09.2025

  • Исправили ошибку, из-за которой при запуске Fragment могло появляться предупреждение.

  • SDK больше не вылетает при вызове copyPlane.

  • Если при гибридном анализе вы выбираете отправку сжатых видео, оригинальные видео больше не сохраняются вместе со сжатыми.

  • Обновили ссылку на сайт Oz Forensics.

  • Повысили безопасность.

8.18.4 – 29.08.2025

  • Чтобы обеспечить поддержку размера страниц памяти в 16 КБ, перевели TensorFlow на Lite RT.

8.18.2 – 07.08.2025

Настоятельно рекомендуем обновиться до этой версии.

  • Исправили ошибку с увеличением длительности и размера видео.

8.18.0 – 16.07.2025

  • Теперь поддерживаем Google Dynamic Feature Delivery.

  • Исправили ошибку, из-за которой SDK мог вылететь при нажатии кнопки закрытия экрана Liveness.

  • Исправили ошибку вылета SDK с исключением CameraDevice was already closed.

  • Обновления безопасности и телеметрии.

8.17.3 – 02.07.2025

  • Устранили проблему несовместимости версий OkHttp.

  • Исправили ошибку с Fragment, который не мог обнаружить контекст.

8.17.2 – 26.06.2025

  • Исправили ошибку доступа к камере, которая иногда возникала на некоторых моделях смартфонов.

8.17.1 – 23.06.2025

  • Обновления безопасности.

8.17.0 – 22.05.2025

  • Обновления безопасности.

8.16.3 – 08.04.2025

  • Обновления безопасности.

8.16.2 – 19.03.2025

  • Исправили ошибку, из-за которой SDK мог вылететь при закрытии экрана съемки.

8.16.1 – 14.03.2025

  • Обновления безопасности.

8.16.0 – 11.03.2025

  • Обновили логику авторизации.

  • Улучшили логику озвучивания подсказок.

  • Исправили наблюдавшуюся на некоторых устройствах ошибку с зависанием SDK после завершения съемки видео.

  • SDK больше не вылетает при попытке обратиться к закрытым или не инициализированным ресурсам.

  • Обновления безопасности.

8.15.6 – 26.02.2025

  • Обновления безопасности.

8.15.5 – 18.02.2025

  • Валидацию видео – опцию, которая запускает запись видео заново, если получившийся файл состоит из 3 кадров и менее – теперь можно отключить. Воспользуйтесь настройкой disableFramesCountValidation.

  • Исправили ошибку, из-за которой на некоторых моделях телефонов могли записываться зеленые видео.

  • Обновления безопасности.

8.15.4 – 11.02.2025

  • Исправили ошибки, из-за которых на некоторых моделях телефонов могли возникать сбои.

8.15.0 – 30.12.2024

  • Добавлен правильный порядок фокусировки для VoiceOver при включенной антискам-подсказке.

  • Добавлена ​​публичная настройка extract_action_shot в Демо Приложении.

  • Исправили ошибки.

  • Обновления безопасности.

8.14.1 – 05.12.2024

  • Исправили ошибку, из-за которой некоторые записанные SDK видео были зелеными.

  • Исправили проблемы с кодеками, появлявшиеся на некоторых моделях смартфонов.

8.14.0 – 02.12.2024

  • Обновления доступности для пользователей с инвалидностью согласно требованиям WCAG: можно настроить озвучивание подсказок SDK и элементов управления.

  • Упростили прохождение проверки для жестов, включающих движение головы.

  • Сжатие больших видео теперь происходит позже: на этапе закрытия экрана Liveness.

  • Исправили ошибку, из-за которой изображение с закрытыми глазами могло быть выбрано в качестве лучшего кадра.

  • Исправили незначительные ошибки.

  • Обновления телеметрии.

8.13.0 – 12.11.2024

  • Обновления безопасности и телеметрии.

8.12.4 – 01.10.2024

  • Обновления безопасности.

8.12.2 – 10.09.2024

  • Обновления безопасности.

8.12.0 – 29.08.2024

  • Обновления безопасности и телеметрии.

8.11.0 – 19.08.2024

  • Исправили ошибку RuntimeException, появлявшуюся в режиме серверного Liveness на некоторых моделях телефонов.

  • Обновления безопасности.

8.10.0 – 26.07.2024

  • Обновления безопасности.

  • Исправили ошибки.

8.9.0 – 18.07.2024

  • Подняли версию плагина Android Gradle до 8.0.0.

  • Улучшили работу SDK.

8.8.3 – 11.07.2024

  • Улучшили работу SDK.

8.8.2 – 21.06.2024

  • Обновления безопасности.

8.8.1 – 12.06.2024

  • Обновления безопасности.

8.8.0 – 04.06.2024

  • Обновления безопасности.

8.7.3 – 03.06.2024

  • Обновления безопасности.

8.7.0 – 06.05.2024

  • При попытке передать пустую строку в качестве аргумента для метода setFolderId теперь показывается информативная ошибка.

  • Исправили ошибку с бесконечно крутящимся спиннером, который появлялся при переключении пользователя на другое приложение во время прохождения проверки Liveness.

  • Исправили несколько ошибок, появлявшихся только на определенных моделях смартфонов.

8.6.0 – 05.04.2024

  • Улучшили модель Liveness для проверки на устройстве.

  • Обновления безопасности.

8.5.0 – 27.02.2024

  • Длительность жеста Селфи теперь можно менять (размер видеофайла также изменится).

  • Вы можете заменить логотип Oz своим, если ваша лицензия это предусматривает.

  • Убрали паузу после жеста Сканирование.

  • Если размер записанного видеофайла больше 10 Мбайт, видео будет сжато.

  • Обновления безопасности и журналирования.

8.4.4 – 06.02.2024

  • Изменили алгоритм валидации для мастер-лицензии.

8.4.3 – 29.01.2024

  • Снизили требования к compileSdkVersion с 34 до 33.

8.4.2 – 15.01.2024

  • Обновления безопасности.

8.4.0 – 04.01.2024

  • Обновили модель Liveness для проверки на устройстве.

  • Исправили ошибки.

8.3.3 – 11.12.2023

  • Улучшили работу механизмов лицензирования.

8.3.2 – 30.11.2023

  • Улучшили работу SDK.

8.3.1 – 24.11.2023

  • Исправили ошибки.

8.3.0 – 17.11.2023

  • Добавили возможность использования мастер-лицензии, которая работает с любым bundle_id.

  • Исправили ошибку со сжатием видео при гибридном анализе, которая возникала на некоторых моделях телефонов.

8.2.1 – 01.11.2023

  • Исправили ошибки.

8.2.0 – 23.10.2023

  • Добавили в структуру Analysis поле sizeReductionStrategy. Оно определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа.

  • Настройка toFrameGradientColor для кастомизации подсказки hintAnimationCustomization больше не используется. Вместо нее используйте hintGradientColor.

  • Сообщения для получаемых из API ошибок теперь детализированы.

8.1.1 – 02.10.2023

  • Если несколько анализов назначаются на папку одновременно, система отправляет их группой. Таким образом, выбирается “худший” результат среди всех анализов, а не последний назначенный. Прочитать про отправку анализов группой можно здесь.

  • В анализе Liveness для количественного результата теперь берется максимальный из вычисленных. Прочитать о результате можно здесь.

8.1.0 – 07.09.2023

  • Обновили модель Liveness для проверки на устройстве.

  • Добавили португальский язык (бразильский вариант).

  • Вы теперь можете добавить язык или изменить текущие переводы самостоятельно. Как это сделать, описано здесь.

  • Если медиафайл по каким-то причинам не загрузился, система повторяет загрузку.

  • Добавили новый метод для получения идентификатора телеметрии (логирования): getEventSessionId.

  • Методы auth и login больше не используются. Вместо них, пожалуйста, используйте метод setApiConnection.

  • OzConfig.baseURL и OzConfig.permanentAccessToken больше не используются.

  • Если пользователь закрывает экран во время съемки видео, соответствующая ошибка обрабатывается SDK.

  • Исправили ошибки и улучшили работу SDK.

8.0.3 – 24.08.2023

  • Исправили ошибки.

8.0.2 – 13.07.2023

  • При установке baseURL = null SDK теперь работает корректно.

8.0.1 – 28.06.2023

  • Версии зависимостей SDK приведены в соответствие с версией Kotlin.

8.0.0 – 19.06.2023

  • Добавлен новый тип анализа – гибридный (сейчас работает только для Liveness). В случае спорных результатов анализа на устройстве проводится дополнительная проверка на сервере.

  • Требования к версии Kotlin понижены до 1.7.21.

  • Обновлены модели для анализов на устройстве.

  • На некоторых моделях телефонов исправлена ошибка fatal device.

  • Текст подсказки теперь может выходить за границы рамки для лица по горизонтали (для основной камеры).

  • Фото, снятые во время однокадрового анализа, теперь передаются на сервер в оригинальном размере.

  • Удален класс OzAnalysisResult. В параметре onSuccess метода AnalysisRequest.run вместо списка OzAnalysisResult теперь передается структура RequestResult.

  • Все исключения перенесены в папку com.ozforensics.liveness.sdk.core.exceptions (детальная информация ниже).

  • Связанные с AnalysisRequest классы перенесены в com.ozforensics.liveness.sdk.analysis (детальная информация ниже).

  • Прекращена поддержка методов:

Удаленный метод

Замена

OzLivenessSDK.uploadMediaAndAnalyze

AnalysisRequest.run

OzLivenessSDK.uploadMedia

AnalysisRequest.Builder.uploadMedia

OzLivenessSDK.runOnDeviceBiometryAnalysis

AnalysisRequest.run

OzLivenessSDK.runOnDeviceLivenessAnalysis

AnalysisRequest.run

AnalysisRequest.build(): AnalysisRequest

-

AnalysisRequest.Builder.addMedia

AnalysisRequest.Builder.uploadMedia

Изменения в публичном интерфейсе

Новые сущности

  • AnalysisRequest.Type.HYBRID в com.ozforensics.liveness.sdk.analysis.entity

  • AnalysisError в com.ozforensics.liveness.sdk.analysis.entity

  • SourceMedia в com.ozforensics.liveness.sdk.analysis.entity

  • ResultMedia в com.ozforensics.liveness.sdk.analysis.entity

  • RequestResult в com.ozforensics.liveness.sdk.analysis.entity

Перенос

  • NoAnalysisException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • NoNetworkException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • TokenException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • NoMediaInAnalysisException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • EmptyMediaListException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • NoSuchMediaException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

  • LicenseException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.security.exception

  • Analysis из com.ozforensics.liveness.sdk.analysis.entity в com.ozforensics.liveness.sdk.core.model

  • AnalysisRequest из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core

  • AnalysisListener из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core

  • AnalysisStatus из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core

  • AnalysisRequest.Builder из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core

  • OzException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions

Измененные классы

OzLivenessSDK

  • Удален метод uploadMediaAndAnalyze

  • Удален метод uploadMedia

  • Удален метод runOnDeviceBiometryAnalysis

  • Удален метод runOnDeviceLivenessAnalysis

AnalysisRequest

  • Удален метод build(): AnalysisRequest

AnalysisRequest.Builder

  • Удален метод addMedia

  • Удален метод onSuccess(result: List<OzAnalysisResult>)

  • Добавлен метод onSuccess(result: RequestResult)

7.3.1 – 07.06.2023

  • Обновили экран настроек.

  • Добавили настройки для фона подсказки.

  • Добавили новые формы рамки (круг, квадрат).

  • Добавили виджет для защиты от мошенничества и набор настроек к нему. С помощью этого виджета вы можете уведомлять пользователей, что ведется съемка видео для, например, отправления заявки на кредит. Таким образом вы сможете защитить пользователей, если мошенники попытаются убедить их подтвердить такой запрос.

  • Метод OzLivenessSDK::init при передаче параметра StatusListener теперь работает корректно.

  • Изменили анимацию жеста "Сканирование".

Обратите внимание: с этой версии используется Kotlin 1.8.20.

7.2.0 – 04.05.2023

  • Улучшили работу алгоритмов SDK.

7.1.4 – 30.03.2023

  • Обновили модель для выполнения анализов на устройстве.

  • Обновили анимацию для солнечных очков / маски.

  • Немного уменьшили размеры овала для Liveness.

7.1.3 – 03.03.2023

  • Исправили ошибку, появлявшуюся при выполнении серверных анализов после использования для авторизации permanentAccessToken.

7.1.2 – 22.02.2023

  • Добавили возможность анимации подсказки.

  • Полосу статуса и системные кнопки теперь можно скрывать (работает с версии 7.0.0).

  • В метод OzLivenessSDK.init теперь нужно первым параметром передавать context.

  • OzAnalysisResult теперь корректно показывает оценки по серверным анализам.

  • Исправлены ошибки инициализации и некорректного отображения настроек кастомизации, а также ошибки некорректной авторизации на версиях Android < 7.1.1.

7.1.1 – 16.01.2023

  • Исправили ошибку с вылетами на версиях Android <6.

  • Поправили расположение овала для некоторых моделей телефонов.

  • Улучшили работу SDK.

7.1.0 – 16.12.2022

  • Обновили систему безопасности.

  • Добавили некоторые внутренние улучшения.

  • Метод addMedia больше не работает. Для загрузки медиафайлов воспользуйтесь методом uploadMedia.

7.0.0 – 23.11.2022

  • Из соображений безопасности мы теперь поставляем два типа библиотек: sdk только для серверного анализа и full для серверного анализа и анализа на устройстве.

  • Заменили OzCustomization на UICustomization.

  • Значительно расширили список настроек кастомизации SDK и обновили дизайн. Если вы хотите вернуть дизайн из прошлых версий, соответствующие настройки описаны здесь.

  • Добавили испанский язык.

6.4.2

  • Исправили ошибку с зависаниями на некоторых моделях телефонов.

  • SDK теперь снимает видео в разрешении 720p (с 6.4.2.3).

6.4.1

  • Наименование режимов анализа приведено в соответствие с iOS: SERVER_BASED и ON_DEVICE.

  • Исправили ошибку с отображением настроек локализации.

6.4.0

  • Теперь в качестве Liveness-экрана можно использовать Fragment.

  • Добавили новое поле params в структуру Analysis – с его помощью можно задавать дополнительные параметры, например, для извлечения на сервере лучшего кадра. Алгоритм "лучший кадр" выбирает из видеозаписи наиболее качественный и удачный кадр с лицом.

6.3.7

  • Жесты отдаления и приближения больше не поддерживаются.

6.3.6

  • Обновили биометрическую модель.

6.3.5

  • Добавили новую упрощенную структуру AnalysisRequest – теперь конструировать запросы на анализы стало проще и удобнее.

6.3.4

  • Добавили модуль для выполнения анализов локально на устройстве. Подключите модуль:

    implementation 'com.ozforensics.liveness:on-device:6.3.4'

Для запуска анализов biometry и liveness используйте соответствующие методы класса OzLivenessSDK: runOnDeviceBiometryAnalysis и runOnDeviceLivenessAnalysis.

val mediaList: List<OzAbstractMedia> = ...
val biometryAnalysisResult: OzAnalysisResult = OzLivenessSDK.runOnDeviceBiometryAnalysis(mediaList)
val livenessAnalysisResult: OzAnalysisResult = OzLivenessSDK.runOnDeviceLivenessAnalysis(mediaList)

6.3.3

  • Liveness теперь работает плавнее.

  • На устройствах Xiaomi больше не зависает камера.

  • Оптимизировали преобразования изображений с камеры.

6.3.1

  • В OzLivenessSDK.uploadMedia добавили параметр metadata и методы OzLivenessSDK.uploadMediaAndAnalyze для передачи metadata в папки.

6.2.8

  • Добавили функции для инициализации SDK с лицензиями LicenseSources: LicenseSource.LicenseAssetId иLicenseSource.LicenseFilePath. Для инициализации используйте метод OzLivenessSDK.init.

  • Добавили возможность получения информации о лицензии после инициализации val licensePayload = OzLivenessSDK.getLicensePayload().

6.2.4

  • Добавили киргизский язык.

6.2.0

  • Добавили функции для локальных анализов.

  • Добавили конфигурацию рамки вокруг лица.

  • Номер версии на экране Liveness теперь отображается корректно.

6.1.0

  • Добавили поддержку основной камеры.

6.0.0

  • Добавили жест OneShot.

  • Добавили состояний в OzAnalysisResult.Resolution.

  • Добавили метод uploadMediaAndAnalyze – он загружает список изображений/видео на сервер и сразу отправляет их на анализ.

  • OzMedia превратили в OzAbstractMedia и добавили подклассы изображений и видео.

  • Исправили ошибки камеры на некоторых устройствах.

5.1.0

  • Токен доступа теперь обновляется автоматически.

  • Переименовали accessToken в permanentAccessToken.

  • Добавили правила R8.

  • Упростили процесс конфигурации. Свойства config теперь можно менять.

5.0.2

  • Исправили овальную рамку.

  • Убрали неиспользуемые параметры params из AnalyseRequest.

  • Убрали лимит по умолчанию на количество попыток.

5.0.0

  • Убрали свойства конфигурации - baseURL, accessToken и так далее. Заменили их на свойство config, которое нужно инициализировать с помощью OzConfig.Builder.

  • Добавили поддержку лицензий. Их нужно устанавливать как raw ресурсы и передавать в OzConfig через setLicenseResourceId.

  • Убрали методы, которым нужен был контекст. Заменили аналогами.

  • Анализ изображений теперь работает лучше.

  • Убрали ненужные зависимости.

  • Поправили ошибки журналирования.

Методы и поля iOS SDK

OZSDK

Синглтон (шаблон-одиночка) для Oz SDK.

Методы

OZSDK

Инициализирует OZSDK, используя данные лицензии. В качестве замыкания передаются либо данные о лицензии, либо LicenseError.

Параметр

Тип

Описание

licenseSources

[]

Источник лицензии

Возвращает

-

setLicense

Принудительно устанавливает лицензию.

Параметр

Тип

Описание

licenseSource

Источник лицензии

setApiConnection

Запрашивает токен доступа для пользователя.

Параметр

Тип

Описание

apiConnection

Параметры авторизации

Возвращает

Токен доступа или ошибку.

setEventsConnection

Запрашивает токен доступа для отправки телеметрии.

Параметр

Тип

Описание

eventsConnection

Параметры авторизации для телеметрии

Возвращает

Токен доступа или ошибку.

isLoggedIn

Проверяет, существует ли токен доступа.

Параметры

-

Возвращает

Результат проверки – true или false.

logout

Удаляет сохраненный токен доступа.

Параметры

-

Возвращает

-

createVerificationVCWithDelegate

Создает контроллер для проверки Liveness.

Параметр

Тип

Описание

delegate

Делегат Oz Liveness

actions

Действие на видео

cameraPosition (опционально)

AVCaptureDevice.Position

front – фронтальная камера (по умолчанию), back – основная камера

Возвращает

UIViewController или исключение.

createVerificationVC

Создает контроллер для проверки Liveness.

Параметр

Тип

Описание

actions

Действие на видео

FaceCaptureCompletion

type alias

пример использования::

public typealias FaceCaptureCompletion = (_ results: [OZMedia]?, _ error: OZVerificationStatus?) -> Void

Callback-функция, которая вызывается по завершении метода. В качестве замыкания передается либо массив объектов , либо ошибка.

cameraPosition (опционально)

AVCaptureDevice.Position

front – фронтальная камера (по умолчанию), back – основная камера

Возвращает

UIViewController или исключение.

cleanTempDirectory

Удаляет все видеоролики.

Параметры

-

Возвращает

-

getEventSessionId

Запрашивает идентификатор сессии телеметрии.

Параметры

-

Возвращает

Идентификатор сессии телеметрии (String).

set

Устанавливает кастомный бандл, в котором содержатся переводы строк.

Параметр

Тип

Описание

languageBundle

Bundle

Бандл для поиска переводов

Возвращает

-

setSelfieLength

Устанавливает длительность жеста Селфи (в миллисекундах).

Параметр

Тип

Описание

selfieLength

Int

Длительность жеста Селфи (в миллисекундах). Должна быть в пределах 500-5000, по умолчанию – 700

generateSignedPayload

Создает payload с подписями медиафайлов.

Параметр

Тип

Описание

media

Массив медиафайлов

folderMeta

[String]

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

Возвращает

payload для загрузки вместе с медиафайлами, для которых он был сгенерирован.

Поля

localizationCode

Язык SDK (если язык не указывается, локаль устанавливается автоматически).

Параметр

Тип

Описание

String

Код локали

host

Хост, к которому обращается система для проверки Liveness.

Параметр

Тип

Описание

host

String

Адрес хоста

attemptSettings

Количество попыток выполнения анализов, после которого SDK выдаст ошибку.

Параметр

Тип

Описание

singleCount

Int

Количество попыток для одного действия/;tcnf

commonCount

Int

Суммарное количество попыток для всех действий/жестов, если используется последовательность (комбо)

faceAlignmentTimeout

Float

Время, в течение которого нужно поместить лицо в рамку

uploadMediaSettings

Настройки повторной отправки медиафайлов

version

Версия SDK.

Параметр

Тип

Описание

version

String

Номер версии

OZLivenessDelegate

Делегат OZSDK.

Методы

onOZLivenessResult

Запрашивает результаты проверки Liveness.

Параметр

Тип

Описание

results

[]

Массив объектов OzMedia

Возвращает

-

onError

Обрабатывает ошибки.

Параметр

Тип

Описание

status

Описание ошибки

Возвращает

-

AnalysisRequest

Протокол для выполнения проверок.

Методы

AnalysisRequestBuilder

Создает инстанс AnalysisRequest.

Параметр

Тип

Описание

folderId (опционально)

String

Идентификатор папки; указывается только в том случае, если нужно загрузить файлы в определенную папку

Возвращает

Инстанс AnalysisRequest.

addAnalysis

Добавляет в AnalysisRequest анализы.

Параметр

Тип

Описание

analysis

Analysis

Структура с информацией об анализах

Возвращает

-

uploadMedia

Загружает медиафайл(ы) на сервер.

Параметр

Тип

Описание

media

Объект или массив объектов OzMedia

Возвращает

-

addFolderId

Добавляет идентификатор папки для загрузки на сервер.

Параметр

Тип

Описание

folderId

String

Идентификатор папки

Возвращает

-

addFolderMeta

Добавляет в папку метаданные.

Параметр

Тип

Описание

meta

[String]

Массив метаданных; пример:

["meta1": "data1"]

Возвращает

-

run

Запускает анализы.

Параметр

Тип

Описание

statusHandler

Callback-функция

statusHandler: @escaping ((_ status: RequestStatus) -> Void)

Вызывается в момент смены состояния метода. В качестве замыкания передается , который показывает статус обработки анализов.

errorHandler

Callback-функция

errorHandler: @escaping ((_ error: Error) -> Void)

Вызывается при возникновении ошибки

completionHandler

Callback-функция

completionHandler: @escaping (_ results : RequestResult) -> Void)

Вызывается по завершении метода. В качестве замыкания передается , который содержит информацию о результатах проверок.

Возвращает

Результат проверок или ошибку.

Customization

Настройки кастомизации OzLivenessSDK (используйте OZSDK.customization).

toolbarCustomization

Настройки кастомизации верхней панели.

Параметр

Тип

Описание

closeButtonIcon

UIImage

Иконка кнопки закрытия

closeButtonColor

UIColor

Цвет кнопки закрытия, tintColor

titleFont

UIFont

Шрифт текста на верхней панели

titleColor

UIColor

Цвет текста на верхней панели

backgroundColor

UIColor

Цвет фона верхней панели

titleText

String

Текст на верхней панели

centerHintCustomization

Настройки кастомизации текста подсказки, ориентируясь на который, пользователь снимает фото или видео.

Параметр

Тип

Описание

textFont

UIFont

Шрифт текста подсказки

textColor

UIColor

Цвет текста подсказки

backgroundColor

UIColor

Цвет фона текста подсказки

verticalPosition

Int

Положение подсказки по вертикали (от верхнего края экрана, в %, 0-100)

hideTextBackground

Bool

Скрывает подложку подсказки

backgroundCornerRadius

Int

Угловой радиус подложки

hintAnimationCustomization

Настройки кастомизации для анимации подсказки.

Параметр

Тип

Описание

hideAnimation

Bool

Переключатель для отображения анимации, значение True скрывает анимацию

animationIconSize

CGfloat

Размер стороны квадрата, в который вписана иконка анимации

hintGradientColor

UIColor

Цвет градиента у рамки

faceFrameCustomization

Настройки кастомизации рамки вокруг лица.

Параметр

Тип

Описание

geometryType

Форма рамки: овал, прямоугольник, круг или квадрат

cornerRadius

CGFloat

Угловой радиус прямоугольника/квадрата (в dp)

strokeFaceNotAlignedColor

UIColor

Цвет рамки, когда лицо не в кадре

strokeFaceAlignedColor

UIColor

Цвет рамки, когда лицо в кадре

strokeWidth

CGFloat

Толщина линии (в dp, 0-20)

strokePadding

CGFloat

Отступ от рамки до овала, куда нужно поместить лицо (в dp, 0-10)

backgroundCustomization

Настройки кастомизации фона за рамкой.

Параметр

Тип

Описание

backgroundColor

UIColor

Цвет фона за рамкой

versionCustomization

Настройки кастомизации текста версии SDK.

Параметр

Тип

Описание

textFont

UIFont

Шрифт текста версии SDK

textColor

UIColor

Цвет текста версии SDK

antiscamCustomization

Настройки защиты от мошенников – сообщения, предупреждающего человека о том, что его снимают.

Parameter

Type

Description

customizationEnableAntiscam

Bool

Включает защиту от мошенников

customizationAntiscamTextMessage

String

Текст сообщения

customizationAntiscamTextFont

UIFont

Шрифт текста сообщения

customizationAntiscamTextColor

UIColor

Цвет текста сообщения

customizationAntiscamBackgroundColor

UIColor

Цвет подложки сообщения

customizationAntiscamCornerRadius

CGFloat

Угловой радиус подложки

customizationAntiscamFlashColor

UIColor

Цвет мигающего индикатора рядом с сообщением

logoCustomization

Параметры настройки логотипа, если лицензия предусматривает возможность его изменения.

Parameter

Type

Description

image

UIImage

Изображение для лого

size

CGSize

Размер лого (в dp)

Переменные и объекты

enum LicenseSource

Источник лицензии.

Значение

Описание

licenseFilePath

Абсолютный путь к лицензии (String)

licenseFileName

Имя файла лицензии

struct LicenseData

Полная информация о лицензии

Параметр

Тип

Описание

appIDS

[String]

Массив идентификаторов приложений

expires

TimeInterval

Период времени, спустя который срок действия лицензии истечет

features

Features

Особенности лицензии

configs (опционально)

ABTestingConfigs

Дополнительная конфигурация

enum OzVerificationMovement

Действие, представленное на видео.

Значение

Описание

smile

Улыбка

eyes

Моргание

scanning

Сканирование

selfie

Селфи с проверкой позиционирования лица

one_shot

Лучший кадр из снятого видео

left

Поворот головы налево

right

Поворот головы направо

down

Наклон головы вниз

up

Подъем головы наверх

enum OZLocalizationCode

Код языка SDK в соответствии с ISO 639-1.

Значение

Описание

en

Английский

ru

Русский

hy

Армянский

kk

Казахский

ky

Кыргызский

tr

Турецкий

es

Испанский

pt-BR

Португальский (бразильский вариант)

custom(String)

Кастомный язык (код языка ISO 639-1, две буквы)

struct OZMedia

Содержит информацию о медиафайле.

Параметр
Тип
Описание

movement

Действие на видео

mediaType

Тип медиафайла

metaData

[String]

Метаданные, если есть

videoURL

URL

URL видео с проверкой Liveness

bestShotURL

URL

URL лучшего кадра в формате PNG

preferredMediaURL

URL

URL медиаконтейнера API

timestamp

Date

Время окончания проверки

enum MediaType

Тип медиафайла.

Значение

Описание

movement

Видео/фото с действием

documentBack

Фото оборотной стороны документа

documentFront

Фото лицевой стороны документа

enum OZVerificationStatus

Описание не актуально (deprecated) и будет удалено в будущих релизах.

Значение

Описание

userNotProcessed

Проверка не была обработана

failedBecauseUserCancelled

Проверка была прервана пользователем.

failedBecauseCameraPermissionDenied

Нельзя выполнить проверку из-за отсутствия доступа к камере

failedBecauseOfBackgroundMode

Нельзя выполнить проверку, так как приложение было свернуто

failedBecauseOfTimeout

Нельзя выполнить проверку, так как время, отведенное на проверку, закончилось

failedBecauseOfAttemptLimit

Нельзя выполнить проверку, так как превышен лимит попыток

failedBecausePreparingTimout

Нельзя выполнить проверку, так как время, отведенное на съемку, закончилось

failedBecauseOfLowMemory

Нельзя выполнить проверку, так как не хватает памяти

struct Analysis

Содержит информацию о том, какие анализы и к каким медиафайлам применять.

Параметр

Тип

Описание

media

[]

Массив объектов OzMedia

type

Тип анализа

mode

Режим анализа

sizeReductionStrategy

Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа.

params (опционально)

String

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

enum AnalysisType

Тип анализа.

Значение

Описание

biometry

Позволяет сравнить несколько фото или видео и оценить уровень схожести запечатленных на них людей.

quality

Проверяет наличие живого человека в кадре

document

Определяет наличие документа в кадре и проверяет корректность полей документа согласно его типу.

blacklist

Сравнивает лицо снятого на фото или видео человека с лицами из заранее созданной базы медиафайлов

В настоящее время для типа DOCUMENTS режим onDevice не поддерживается.

enum AnalysisMode

Режим анализа.

Значение

Описание

onDevice

Анализ на устройстве

serverBased

Анализ на сервере

hybrid

Гибридный анализ для Liveness: если итоговая оценка анализа на устройстве больше определенного порога, медиафайл дополнительно анализируется на сервере.

enum ScenarioState

Отображает статус обработки медиафайлов.

Значение

Описание

addToFolder

Система создает папку и помещает в нее медиафайлы

addAnalyses

Система добавляет анализы

waitAnalysisResult

Система ожидает результата

struct AnalysisStatus

Отображает статус загрузки файлов.

Параметр

Тип

Описание

media

Объект, который загружается в данный момент

index

Int

Номер объекта в списке

from

Int

Количество объектов

progress

Progress

Статус загрузки

RequestStatus

Отображает промежуточный результат обработки анализов.

Параметр

Тип

Описание

status

Статус обработки анализов

progressStatus

Статус загрузки медиафайла

ResultMedia

Описывает результат анализа для одного медиафайла.

Параметр

Тип

Описание

resolution

Общий результат анализа

sourceId

String

Идентификатор медиафайла на сервере

isOnDevice

Bool

Режим анализа

confidenceScore

Float

Итоговая оценка

mediaType

String

Тип медиафайла: VIDEO / IMAGE / SHOT_SET

media

Анализируемый медиафайл

error

AnalysisError (наследуется от базового Error)

Ошибка

RequestResult

Сводный результат анализа для всех медиафайлов.

Параметр

Тип

Описание

resolution

Сводный результат анализов

folderId

String

Идентификатор

analysisResults

[]

Результаты анализов

class AnalysisResult

Содержит результат проверок.

Параметр

Тип

Описание

resolution

Общий результат анализа

type

Тип анализа

mode

Режим анализа

analysisId

String

Идентификатор анализа

error

AnalysisError (наследуется от базового Error)

Ошибка

resultMedia

[]

Список результатов анализов по отдельным медиафайлам

confidenceScore

Float

Итоговая оценка

serverRawResponse

String

Ответ сервера

enum AnalyseResolutionStatus

Сводный статус по выполненным анализам.

Значение

Описание

INITIAL

Анализы не назначались

PROCESSING

Анализы выполняются

FAILED

Один или более анализов не удалось завершить из-за ошибок

FINISHED

Анализы выполнены

DECLINED

Проверка не пройдена (лица не совпадают или замечена спуфинг-атака)

SUCCESS

Проверка успешно пройдена

OPERATOR_REQUIRED

Результат анализов должен быть дополнительно перепроверен оператором

struct AnalyseResolution

Содержит результаты одиночных анализов.

Параметр

Тип

Описание

analyseResolutionStatus

Статус анализа

type

Тип анализа

folderID

String

Идентификатор папки

score

Float

Результат выполненной проверки

enum GeometryType

Форма рамки.

Значение

Описание

oval

Овальная рамка

rectangle(cornerRadius: CGFloat)

Прямоугольная рамка (угловой радиус рамки)

circle

Круглая рамка

square(cornerRadius: CGFloat)

Квадратная рамка (угловой радиус рамки)

enum LicenseError

Возможные ошибки лицензирования.

Case

Description

licenseFileNotFound

Лицензия не найдена

licenseParseError

Невозможно распознать файл лицензии

licenseBundleError

Указанный в лицензииbundle_id не совпадает с используемым bundle_id.

licenseExpired

Срок действия лицензии истек

enum Connection

Тип авторизации.

Значение

Описание

fromServiceToken

Авторизация через токен:

  • host: String

  • token: String

fromCredentials

Авторизация через логин и пароль:

  • host: String

  • login: String

  • password: String

struct UploadMediaSettings

Настройки повторной отправки медиафайлов.

Параметр
Тип
Описание

attemptsCount

Int

Количество попыток загрузки медиафайла

attemptsTimeout

Int

Интервал времени между попытками

enum SizeReductionStrategy

Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа. По умолчанию отправляется сжатое видео.

Case
Description

uploadOriginal

Исходное видео

uploadCompressed

Сжатое видео

uploadBestShot

Полученный из видео лучший кадр

uploadNothing

Ничего (в этом случае на сервер не отправляется ничего, папка не создается)

LicenseSource
LicenseSource
Connection
Connection
OZLivenessDelegate
OzVerificationMovement
OzVerificationMovement
OzMedia
OZMedia
OZLocalizationCode
UploadMediaSettings
OzMedia
OZVerificationStatus
OZMedia
RequestStatus
RequestResult
GeometryType
OZVerificationMovement
MediaType
OzMedia
AnalysisType
AnalysisMode
SizeReductionStrategy
OzMedia
ScenarioState
AnalysisStatus
AnalysisResolutionStatus
OZMedia
AnalysisResolutionStatus
AnalysisResult
AnalysisResolutionStatus
AnalysisType
AnalysisMode
ResultMedia
AnalyseResolutionStatus
AnalysisType

Методы и поля Android SDK

OzLivenessSDK

Синглтон (шаблон-одиночка) для Oz SDK.

clearActionVideos

Удаляет все видеоролики.

Параметры

-

Возвращает

-

createStartIntent

Создает намерение (intent) для запуска Liveness.

Параметр

Тип

Описание

actions

Список возможных действий

Возвращает

-

getErrorFromIntent

Запрашивает ошибку из намерения (intent) OnActivityResult (при наличии).

Параметр

Тип

Описание

data

Intent

Проверяемое намерение

Возвращает

Текст ошибки.

getLicensePayload

Запрашивает информацию о лицензии SDK.

Параметры

-

Возвращает

Полную информацию о лицензии – объект LicensePayload.

getResultFromIntent

Запрашивает медиафайлы из намерения (intent) OnActivityResult.

Параметр

Тип

Описание

data

Intent

Проверяемое намерение

Возвращает

Массив объектов OzAbstractMedia.

init

Инициализирует SDK, используя данные лицензии.

Параметр

Тип

Описание

context

Context

Базовый класс Context

licenseSources

[]

Список источников лицензий

statusListener (опционально)

StatusListener

Обработчик для проверки результата

Возвращает

-

log

Включает журналирование, запуская соответствующие механизмы Oz Liveness SDK.

Параметр

Тип

Описание

tag

String

Метка сообщения

log

String

Тело сообщения

Возвращает

-

setApiConnection

Подключение к API.

Параметр

Тип

Описание

connection

Тип подключения

statusListener

StatusListener<String?>

Обработчик

setEventsConnection

Подключение к серверу телеметрии.

Параметр

Тип

Описание

connection

Тип подключения

statusListener

StatusListener<String?>

Обработчик

logout

Удаляет сохраненный токен.

Параметры

-

Возвращает

-

getEventSessionId

Запрашивает идентификатор сессии телеметрии.

Параметры

-

Возвращает

Идентификатор сессии телеметрии (String).

version

Запрашивает версию SDK.

Параметры

-

Возвращает

Номер версии SDK (String).

generateSignedPayload

Создает payload с подписями медиафайлов.

Параметр

Тип

Описание

media

Массив медиафайлов

folderMeta (опционально)

[String: any]

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

Возвращает

payload для загрузки вместе с медиафайлами, для которых он был сгенерирован.

AnalysisRequest

Класс для выполнения проверок.

run

Запускает анализы.

Параметр

Тип

Описание

onStatusChange

,

Callback-функция:

onStatusChange(status: AnalysisRequest.AnalysisStatus) { handleStatus() }

Вызывается при изменении статуса AnalysisRequest. Текущий статус отображается в .

onError

Callback-функция:

onError(error: OzException) { handleError() }

Вызывается в случае ошибки.

onSuccess

Callback-функция:

onSuccess(result: RequestResult) {

handleResults() }

Вызывается по завершении анализов. В качестве результата передается объект .

class Builder

Конструктор для AnalysisRequest.

build

Создает AnalysisRequest.

Параметры

-

Возвращает

Экземпляр класса AnalysisRequest.

addAnalysis

Добавляет в запрос анализ.

Параметр

Тип

Описание

analysis

Структура с данными об анализе

Возвращает

Ошибку в случае ее появления.

addAnalyses

Добавляет в запрос список анализов (можно назначить несколько анализов для одной папки).

Параметр

Тип

Описание

analysis

[]

Массив структур Analysis

Возвращает

Ошибку в случае ее появления.

addFolderMeta

Добавляет метаданные в создаваемую папку (только для анализа на сервере).

Параметр

Тип

Описание

key

String

Ключ

value

String

Значение

Возвращает

Ошибку в случае ее появления.

uploadMedia

Добавляет один или несколько медиафайлов в папку для последующего выполнения проверок.

Параметр

Тип

Описание

mediaList

[]

Объект или массив объектов OzAbstractMedia

Возвращает

Ошибку в случае ее появления.

setFolderId

Устанавливает идентификатор для ранее созданной папки. Эта папка должна существовать на сервере, иначе создастся новая.

Параметр

Тип

Описание

folderID

String

Идентификатор папки

Возвращает

Ошибку в случае ее появления.

OzConfig

Конфигурация OzLivenessSDK (используйте OzLivenessSDK.config).

setSelfieLength

Устанавливает длительность жеста Селфи (в миллисекундах).

Параметр

Тип

Описание

selfieLength

Int

Длительность жеста Селфи (в миллисекундах). Должна быть в пределах 500-5000, по умолчанию – 700

Возвращает

Ошибку в случае ее появления.

allowDebugVisualization

Возможность отображать дополнительную отладочную информацию при нажатии на текст версии.

Параметр

Тип

Описание

allowDebugVisualization

Boolean

Включает / выключает отображение дополнительной информации

attemptSettings

Количество попыток выполнить анализы, после которого SDK выдаст ошибку.

Параметр

Тип

Описание

attemptsSettings

Количество попыток

baseURL

URL сервера API для работы с телеметрией.

Параметр

Тип

Описание

baseURL

String

Адрес сервера

faceAlignmentTimeout

Время, в течение которого нужно поместить лицо в рамку и выполнить жест (в миллисекундах).

Параметр

Тип

Описание

faceAlignmentTimeout

Long

Значение тайм-аута

uploadMediaSettings

Настройки повторной отправки медиафайлов.

Parameter

Type

Description

uploadMediaSettings

Устанавливает количество попыток и интервал между ними

livenessErrorCallback

Интерфейс для обработки ошибок.

Параметр

Тип

Описание

livenessErrorCallback

ErrorHandler

Callback для обработки ошибок

localizationCode

Локализация текста.

Параметр
Тип
Описание

localizationCode

Код языка SDK

logging

Настройки журналирования.

Параметр
Тип
Описание

logging

Настройки журналирования

useMainCamera

Включает использование основной (задней) камеры для съемки вместо фронтальной.

Параметр

Тип

Описание

useMainCamera

Boolean

True – используется основная камера,

False – фронтальная

disableFramesCountValidation

Отключает опцию, которая запускает запись видео заново, если получившийся файл состоит из 3 кадров и менее.

Параметр

Тип

Описание

disableFramesCountValidation

Boolean

True – опция отключена,

False – опция включена

UICustomization

Настройки кастомизации OzLivenessSDK (используйте OzLivenessSDK.config.customization).

hideStatusBar

Скрывает системные части экрана: полосу статуса и кнопки. По умолчанию имеет значение True.

toolbarCustomization

Настройки кастомизации верхней панели.

Параметр

Тип

Описание

closeIconRes

Int (@DrawableRes)

Иконка кнопки закрытия

closeIconTint

Цвет кнопки закрытия

titleTextFont

Int (@FontRes)

Шрифт текста на верхней панели

titleTextFontStyle

Int (значения из android.graphics.Typeface, например Typeface.BOLD)

Стиль шрифта текста на верхней панели

titleTextSize

Int

Размер текста на верхней панели (в sp, 12-18)

titleTextAlpha

Int

Непрозрачность текста на верхней панели (в %, 0-100)

titleTextColor

Цвет текста на верхней панели

backgroundColor

Цвет фона верхней панели

backgroundAlpha

Int

Непрозрачность фона верхней панели (в %, 0-100)

isTitleCentered

Boolean

Центрирует текст на верхней панели

title

String

Текст на верхней панели

centerHintCustomization

Настройки кастомизации текста подсказки, ориентируясь на который, пользователь снимает фото или видео.

Параметр

Тип

Описание

textFont

String

Шрифт текста подсказки

textStyle

Int (значения из android.graphics.Typeface, например Typeface.BOLD)

Стиль текста подсказки

textSize

Int

Размер шрифта текста подсказки (в sp, 12-34)

textColor

​​

Цвет текста подсказки

textAlpha

Int

Непрозрачность текста подсказки (в %, 0-100)

verticalPosition

Int

Положение подсказки по вертикали (от нижнего края экрана, в %, 0-100)

backgroundColor

​

Цвет фона

backgroundOpacity

Int

Непрозрачность фона

backgroundCornerRadius

Int

Радиус скругления углов рамки фона (в dp, 0-20)

hintAnimation

Настройки кастомизации для анимации подсказки.

Параметр

Тип

Описание

hintGradientColor

Цвет градиента

hintGradientOpacity

Int

Непрозрачность градиента

animationIconSize

Int

Размер квадрата, в который вписан значок анимации

hideAnimation

Boolean

Настройки скрытия анимации, при значении True анимация скрывается

faceFrameCustomization

Настройки кастомизации рамки вокруг лица.

Параметр

Тип

Описание

geometryType

​​

Форма рамки (oval, rectangle, circle или square)

cornerRadius

Int

Угловой радиус прямоугольника (в dp, 0-20)

strokeDefaultColor

​​

Цвет рамки, когда лицо не в кадре

strokeFaceInFrameColor

​​

Цвет рамки, когда лицо в кадре

strokeAlpha

Int

Непрозрачность рамки (в %, 0-100)

strokeWidth

Int

Толщина линии (в dp, 0-20)

strokePadding

Int

Отступ от рамки до овала, куда нужно поместить лицо (в dp, 0-10)

backgroundCustomization

Настройки кастомизации фона за рамкой.

Параметр

Тип

Описание

backgroundColor

​​

Цвет фона

backgroundAlpha

Int

Непрозрачность фона (в %, 0-100)

versionTextCustomization

Настройки кастомизации текста версии SDK.

Параметр

Тип

Описание

textFont

Int (@FontRes)

Шрифт текста версии SDK

textSize

Int

SDK version text size (в sp, 12-16)

textColor

​​

Цвет текста версии SDK

textAlpha

Int

Непрозрачность текста версии SDK (в %, 20-100)

antiscamCustomization

Настройки кастомизации для защиты от мошенничества (сообщение о том, что идет запись).

Параметр

Тип

Описание

textMessage

String

Текст сообщения

textFont

String

Шрифт текста сообщения

textSize

Int

Размер шрифта сообщения (в px, 12-18)

textColor

Цвет текста сообщения

textAlpha

Int

Непрозрачность текста сообщения (в %, 0-100)

backgroundColor

Цвет фона сообщения

backgroundOpacity

Int

Непрозрачность фона сообщения

cornerRadius

Int

Радиус скругления углов рамки фона (в px, 0-20)

flashColor

Цвет мигающего индикатора рядом с сообщением

logoCustomization

Параметры настройки логотипа, если лицензия предусматривает возможность его изменения.

Parameter

Type

Description

image

Bitmap (@DrawableRes)

Изображение для лого

size

Size

Размер лого (в dp)

Переменные и объекты

enum OzAction

Действие, представленное на видео.

Значение

Описание

OneShot

Лучший кадр из снятого видео

Blank

Селфи с проверкой позиционирования лица

Scan

Сканирование

HeadRight

Поворот головы направо

HeadLeft

Поворот головы налево

HeadDown

Наклон головы вниз

HeadUp

Подъем головы вверх

EyeBlink

Моргание

Smile

Улыбка

class LicensePayload

Содержит расширенную информацию о параметрах лицензии.

Параметр

Тип

Описание

expires

Float

Период времени, спустя который срок действия лицензии истечет

features

Features

Особенности лицензии

appIDS

[String]

Массив идентификаторов приложений

sealed class OzAbstractMedia

Класс для снятого фото или видео, может быть:

OzDocumentPhoto

Фото документа.

Параметр

Тип

Описание

tag

Тег для фото документа

photoPath

String

Абсолютный путь к фото

additionalTags (опционально)

String

Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)

metaData

Map<String, String>

Метаданные медиафайла

OzShotSet

Набор кадров (shot set) в архиве.

Параметр

Тип

Описание

tag

Тег для shot set

archivePath

String

Путь к архиву

additionalTags (опционально)

String

Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)

metaData

Map<String, String>

Метаданные медиафайла

OzVideo

Видео с проверкой Liveness.

Параметр

Тип

Описание

tag

Тег видео

videoPath

String

URL видео с проверкой Liveness

bestShotPath (optional)

String

URL лучшего кадра в формате PNG

preferredMediaPath (optional)

String

URL медиаконтейнера API

additionalTags (опционально)

String

Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)

metaData

Map<String, String>

Метаданные медиафайлам

enum OzMediaTag

Тег в соответствии с жестом на видео.

Значение

Описание

Blank

Видео без определенного жеста

PhotoSelfie

Селфи-фото

VideoSelfieOneShot

Видео с извлекаемым лучшим кадром

VideoSelfieScan

Видео с жестом «сканирование»

VideoSelfieEyes

Видео с жестом «моргание»

VideoSelfieSmile

Видео с жестом «улыбка»

VideoSelfieHigh

Видео с жестом «подъем головы наверх»

VideoSelfieDown

Видео с жестом «наклон головы вниз»

VideoSelfieRight

Видео с жестом «поворот головы направо»

VideoSelfieLeft

Видео с жестом «поворот головы налево»

PhotoIdPortrait

Фото, извлеченное из документа

PhotoIdBack

Фото оборотной стороны документа

PhotoIdFront

Фото лицевой стороны документа

sealed class LicenseSource

Класс для хранения лицензии, может быть:

LicenseAssetId

Содержит идентификатор лицензии.

Параметр

Тип

Описание

id

Int

Идентификатор лицензии

LicenseFilePath

Содержит путь к лицензии.

Параметр

Тип

Описание

path

String

Абсолютный путь к лицензии

class AnalysisStatus

Класс для статуса анализа, может быть:

RunningAnalysis

Статус означает, что анализы запущены.

Параметр

Тип

Описание

analysis

Информация о том, какие анализы и к каким медиафайлам применять.

UploadingMedia

Статус означает, что в настоящее время загружаются медиафайлы.

Параметр

Тип

Описание

media

Объект, который загружается в данный момент

index

Int

Номер объекта в списке

from

Int

Количество объектов

percentage

Int

Процент завершения

enum Type

Тип анализа.

Значение

Описание

BIOMETRY

Позволяет сравнить несколько фото или видео и оценить уровень схожести запечатленных на них людей.

QUALITY

Проверяет наличие живого человека в кадре

DOCUMENTS

Определяет наличие документа в кадре и проверяет корректность полей документа согласно его типу.

В настоящее время для типа DOCUMENTS режим ON_DEVICE не поддерживается.

enum Mode

Режим анализа.

Значение

Описание

ON_DEVICE

Анализ на устройстве. Мы рекомендуем использовать режим анализа на сервере, поскольку он обеспечивает более точные результаты

SERVER_BASED

Анализ на сервере

HYBRID

Гибридный анализ для Liveness: если итоговая оценка анализа на устройстве больше определенного порога, медиафайл дополнительно анализируется на сервере

class Analysis

Содержит информацию о том, какие анализы и к каким медиафайлам применять.

Параметр

Тип

Описание

type

Тип анализа

mode

Режим анализа

mediaList

[]

Массив объектов OzAbstractMedia

params (опционально)

Map<String, Any>

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

sizeReductionStrategy

Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа

enum Resolution

Сводный статус по выполненным анализам.

Значение

Описание

FAILED

Один или более анализов не удалось завершить из-за ошибок

DECLINED

Проверка не пройдена (лица не совпадают или замечена спуфинг-атака)

SUCCESS

Проверка успешно пройдена

OPERATOR_REQUIRED

Результат анализов должен быть дополнительно перепроверен оператором

class OzAttemptsSettings

Количество попыток выполнения анализов, после которого SDK выдаст ошибку.

Параметр

Тип

Описание

singleCount

Int

Количество попыток для одного действия/жеста

commonCount

Int

Суммарное количество попыток для всех действий/жестов, если используется последовательность (комбо)

enum OzLocalizationCode

Код языка SDK в соответствии с ISO 639-1.

Значение

Описание

EN

Английский

RU

Русский

HY

Армянский

KK

Казахский

KY

Кыргызский

TR

Турецкий

ES

Испанский

PT-BR

Португальский

class OzLogging

Настройки журналирования.

Параметр

Тип

Описание

allowDefaultLogging

Boolean

Включает запись в LogCat

allowFileLogging

Boolean

Включает запись в файл

journalObserver

StatusListener

Обработчик для получения событий на стороне приложения

sealed class Color

Настройки цвета, в зависимости от принимаемого значения могут быть:

ColorRes

Параметр

Тип

Описание

resId

Int

Ссылка на цвет в системе ресурсов Android

ColorHex

Параметр

Тип

Описание

hex

String

Цвет в формате HEX (например #FFFFFF)

ColorInt

Параметр

Тип

Описание

color

Int

Int-значение цвета в Android

enum GeometryType

Форма рамки.

Значение

Описание

Oval

Овал

Rectangle

Прямоугольник

Circle

Круг

Square

Квадрат

class AnalysisError

Класс для описания ошибок.

Параметр

Тип

Описание

apiErrorCode

Int

Код ошибки

message

String

Сообщение

class SourceMedia

Описывает отправленный на анализ медиафайл.

Параметр

Тип

Описание

mediaId

String

Идентификатор медиафайла

mediaType

String

Тип медиа

originalName

String

Первоначальное название файла

ozMedia

Медиафайл

tags

List<String>

Теги файла

class ResultMedia

Описывает результат анализа для одного медиафайла.

Параметр

Тип

Описание

confidenceScore

Float

Итоговая оценка

isOnDevice

Boolean

Режим анализа

resolution

Общий результат анализа

sourceMedia

Анализируемый медиафайл

type

Тип анализа

class RequestResult

Сводный результат анализа для всех медиафайлов.

Параметр

Тип

Описание

analysisResults

List<>

Результат анализа

folderId

String

Идентификатор

resolution

Общий результат анализа

class AnalysisResult

Описывает результаты анализов для всех медиафайлов в папке.

Параметр

Тип

Описание

resolution

Общий результат анализа

type

Тип анализа

mode

Режим анализа

resultMedia

List<>

Список результатов отдельных анализов

confidenceScore

Float

Итоговая оценка

analysisId

String

Идентификатор анализа

params

@RawValue Map<String, Any>

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

error

Ошибка

serverRawResponse

String

Ответ сервера

class OzConnection

Определяет метод авторизации.

OzConnection.fromServiceToken

Авторизация по токену.

Параметр

Тип

Описание

host

String

Адрес сервера API

token

String

Токен доступа

OzConnection.fromCredentials

Авторизация по логину и паролю.

Параметр

Тип

Описание

host

String

Адрес сервера API

username

String

Логин

password

String

Пароль

class OzUploadMediaSettings

Настройки повторной отправки медиафайлов.

Параметр

Тип

Описание

attemptsCount

Int

Количество попыток отправки медиафайлов

attemptsTimeout

Int

Интервал времени между попытками

enum SizeReductionStrategy

Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа. По умолчанию отправляется сжатое видео.

Значение

Описание

UPLOAD_ORIGINAL

Исходное видео

UPLOAD_COMPRESSED

Сжатое видео

UPLOAD_BEST_SHOT

Полученный из видео лучший кадр

UPLOAD_NOTHING

Ничего (в этом случае на сервер не отправляется ничего, папка не создается)

Возможные ошибки

Код ошибки

Сообщение

Описание

ERROR = 3

Error.

Неизвестная ошибка

ATTEMPTS_EXHAUSTED_ERROR = 4

Error. Attempts exhausted for liveness action.

Превышено количество

VIDEO_RECORD_ERROR = 5

Error by video record.

Ошибка записи видео

NO_ACTIONS_ERROR = 6

Error. OzLivenessSDK started without actions.

на видео не найдены

FORCE_CLOSED = 7

Error. Liveness activity is force closed from client application.

Клиент закрыл экран Liveness во время работы

DEVICE_HAS_NO_FRONT_CAMERA = 8

Error. Device has not front camera.

Фронтальная камера на устройстве не найдена

DEVICE_HAS_NO_MAIN_CAMERA = 9

Error. Device has not main camera.

Задняя (основная) камера на устройстве не найдена

DEVICE_CAMERA_CONFIGURATION_NOT_SUPPORTED = 10

Error. Device camera configuration is not supported.

Liveness не поддерживает конфигурацию камеры на устройстве

FACE_ALIGNMENT_TIMEOUT = 12

Error. Face alignment timeout in OzLivenessSDK.config.faceAlignmentTimeout milliseconds

Время подготовки, выделенное на съемку, истекло

ERROR = 13

The check was interrupted by user

Пользователь закрыл экран Liveness во время проверки

OzAction
LicenseSource
OzConnection
OzConnection
OzAbstractMedia
AnalysisStatus
RequestResult
Analysis
Analysis
OzAbstractMedia
OzAttemptsSettings
OzUploadMediaSettings
OzLocalizationCode
OzLogging
Color
Color
Color
Color
Color
Color
GeometryType
Color
Color
Color
Color
Color
Color
Color
OzMediaTag
OzMediaTag
OzMediaTag
Analysis
OzAbstractMedia
Type
Mode
OzAbstractMedia
SizeReductionStrategy
OzAbstractMedia
Resolution
SourceMedia
Type
AnalysisResult
Resolution
Resolution
Type
Mode
ResultMedia
AnalysisError
попыток анализа
Жесты