Образец кода для Flutter вы можете найти здесь .
Установка и лицензирование
Добавьте строки из блока ниже в pubspec.yaml проекта, где планируется использовать плагин.
Copy 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:
Copy assets
- assets/license.json // название файла лицензии должно совпадать с названием из папки assets
Для Android укажите путь к репозиторию Oz в /android/build.gradle , раздел allprojects → repositories :
Copy 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 :
Copy android.nonTransitiveRClass=false
Минимальная версия SDK – 21 или выше:
Copy 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 ).
Copy await OZSDK . initSDK ([ <% название файла лицензии и путь к нему %> ]);
Подключение SDK к API
Для подключения используйте полученные от нас логин, пароль и адрес API сервера.
Copy await OZSDK . setApiConnectionWithCredentials ( < login > , < password > , < host > );
На стадии коммерческого использования вместо логина и пароля мы рекомендуем использовать токен доступа, который можно получить с помощью метода API /api/authorize/auth
.
Copy await OZSDK . setApiConnectionWithToken (token, host);
По умолчанию логи сохраняются вместе с данными по анализам. Если вы планируете хранить логи отдельно от этих данных, настройте отдельное подключение для телеметрии :
Copy await OZSDK . setEventsConnectionWithCredentials ( < login > , < password > , < host > );
или
Copy await OZSDK . setEventsConnectionWithToken ( < token > , < host > );
Съемка видео
Для запуска съемки и получения результата вызовите метод startLiveness
:
Copy await OZSDK . startLiveness ( < actions > , < use_main_camera > );
Обратите внимание: для версий до 8.11 включительно метод для запуска называется executeLiveness
. Он возвращает результат съемки.
Для получения результата съемки в версии 8.12 и новее подпишитесь на livenessResult
, как показано ниже:
Copy 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
:
Copy List < Analysis > analysis = [ Analysis ( Type .quality, Mode .serverBased, < media > , {}), ];
Запустите созданный анализ:
Copy final analysisResult = await OZSDK . analyze (analysis, [], {}) ?? [];
Результат анализа запишется в массив объектов analysisResult
.
Для анализа медиафайла, полученного не нашим SDK, используйте следующий код:
Copy media = Media ( FileTypedocumentPhoto , VerificationAction .oneShot, “photo_selfie”, null , < pat
Итоговый блок кода (пример):
Liveness
Copy // замените 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, [], {});
Biometry
Copy // замените 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, [], {});