Общая информация
Эта статья описывает интеграцию устройств Рутокен Описание интеграции устройств Рутокен в мобильные приложения для платформы Android без использования приложения "Панель управления Рутокен" .
Поддерживаемые версии Android
Android 7.0 (API Level 24) и выше.
Встраивание устройств Рутокен в проект
Для встраивания необходимо прописать следующую зависимость на библиотеку rtpcscbridge:
...
title | Gradle (Groovy DSL) |
---|
Code Block |
---|
implementation 'ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0' |
...
title | Gradle (Kotlin DSL) |
---|
Code Block |
---|
implementation("ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0") |
Tip |
---|
Библиотека доступна в репозитории Maven Central. |
Точкой входа встраивания является класс ru.rutoken.rtpcscbridge.RtPcscBridge, который необходим для инициализации библиотеки rtpcscbridge.
Для каждого процесса приложения, в котором происходит взаимодействие с устройствами Рутокен, необходимо вызывать статический метод setAppContext и передавать ему в качестве параметра Android application context.
Типичное место вызова метода – внутри onCreate() класса-наследника Application.
Code Block |
---|
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
RtPcscBridge.setAppContext(this);
}
} |
Режимы использования встраивания
Встраивание поддерживает два режима использования:
...
UI Tab | ||
---|---|---|
| ||
В данном режиме осуществляется явный вызов методов инициализации и финализации библиотеки, а также прямое управление отслеживанием устройств Рутокен с NFC. Например: |
UI Tab | ||
---|---|---|
| ||
В данном режиме встраивание активируется для всех Activity приложения, реализующих интерфейс OnNewIntentProvider. Методы ручного API вызываются автоматически на определенных этапах жизненного цикла приложения. |
располагается на https://github.com/AktivCo/android-standalone-scheme-docs.
Пример приложения, которое демонстрирует работу такой интеграции https://github.com/AktivCo/rutoken-tech-android
Ручной API встраивания
Для работы с устройствами Рутокен в Ручном режиме применяется интерфейс ru.rutoken.rttransport.RtTransport. Его инстанс можно получить с помощью метода RtPcscBridge.getTransport().
Рекомендуется следующий порядок вызова API:
...
Порядок
вызова
...
Метод
...
Описание
...
Место вызова
...
Рекомендуется:
- в методе Activity.onStart();
- в методе Service.onCreate() – в случае использования внутри сервиса.
...
ТОЛЬКО из Main потока в методе Activity.onResume().
...
При получении каждого NFC интента.
Например.
внутри Activity.onNewIntent()
...
Рекомендуется:
- в методе Activity.onStop();
- в методе Service.onDestroy() – в случае использования внутри сервиса.
Автоматический API встраивания
Для работы в Автоматическом режиме применяется класс ru.rutoken.rttransport.RtTransportExtension. Его инстанс можно получить из метода RtPcscBridge.getTransportExtension().
Для включения Автоматического режима необходимо вызвать метод attachToLifecycle.
Пример.
Инициализация библиотеки и включение автоматического режима внутри класса-наследника Application.
Code Block |
---|
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
RtPcscBridge.setAppContext(this);
RtPcscBridge.getTransportExtension().attachToLifecycle(this, true);
}
} |
В параметры метода attachToLifecycle дополнительно можно передать флаг useAutoNfcHandling для включения/выключения автоматической обработки устройств Рутокен с NFC.
По умолчанию значение флага – true.
Warning |
---|
Автоматическая обработка устройств Рутокен с NFC осуществляется только для тех Activity, которые реализуют интерфейс OnNewIntentProvider. |
Для отключения Автоматического режима применяется метод RtPcscBridge.getTransportExtension().detachFromLifecycle(app).
Если взаимодействие с устройством Рутокен осуществляется на протяжении всей работы приложения, то данный метод можно не применять.
Отслеживание подключения (отключения) устройств Рутокен
Встраивание позволяет отслеживать подключение и отключение устройств Рутокен с помощью интерфейса ru.rutoken.rttransport.RtTransport.PcscReaderObserver.
...