arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

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

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

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

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

Для 8.22 и новее:

ozsdk: ^8.22.0

До 8.21 включительно:

  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:

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

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

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

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

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

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

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

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

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

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

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

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

или

hashtag
Съемка видео

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

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

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

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

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

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

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

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

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

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

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

Параметр

Тип

Описание

actions

List<VerificationAction>

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

use_main_camera

Boolean

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

телеметрии
assets
  - assets/license.json // название файла лицензии должно совпадать с названием из папки assets
allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url ‘https://ozforensics.jfrog.io/artifactory/main’ } // ссылка на репозиторий
    }
}
android.nonTransitiveRClass=false
defaultConfig {
  ...
  minSDKVersion 21
  ...
}
await OZSDK.initSDK([<% название файла лицензии и путь к нему %>]);
await OZSDK.setApiConnectionWithCredentials(<login>, <password>, <host>);
 await OZSDK.setApiConnectionWithToken(token, host);
await OZSDK.setEventConnectionWithCredentials(<login>, <password>, <host>);
await OZSDK.setEventConnectionWithToken(<token>, <host>);
await OZSDK.startLiveness(<actions>, <use_main_camera>);
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();
  }
}
List<Analysis> analysis = [ Analysis(Type.quality, Mode.serverBased, <media>, {}), ];
final analysisResult = await OZSDK.analyze(analysis, [], {});
final analysisResult = await OZSDK.analyze(analysis, folderID, [], {});
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, [], {});