Общая информация
Эта статья описывает интеграцию устройств Рутокен в мобильные приложения для платформы Android без использования приложения "Панель управления Рутокен".
Поддерживаемые версии Android
Android 7.0 (API Level 24) и выше.
Настройка зависимостей в проекте
Для встраивания необходимо добавить в зависимости библиотеку rtpcscbridge:
implementation 'ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0'
implementation("ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0")
Точкой входа встраивания является класс ru.rutoken.rtpcscbridge.RtPcscBridge, который необходим для инициализации библиотеки rtpcscbridge.
Для каждого процесса приложения, в котором происходит взаимодействие с устройствами Рутокен, необходимо вызывать статический метод setAppContext и передавать ему в качестве параметра Android application context.
Типичное место вызова метода – внутри onCreate() класса-наследника Application.
public class App extends Application { @Override public void onCreate() { super.onCreate(); RtPcscBridge.setAppContext(this); } }
Режимы использования встраивания
Встраивание поддерживает два режима использования:
В данном режиме осуществляется явный вызов методов инициализации и финализации библиотеки, а также прямое управление отслеживанием устройств Рутокен с NFC.
Это обеспечивает полный контроль над поведением библиотеки со стороны приложения.
Например:
Активация встраивания только для части Activity приложения.
В данном режиме встраивание активируется для всех Activity приложения, реализующих интерфейс OnNewIntentProvider.
Методы ручного API вызываются автоматически на определенных этапах жизненного цикла приложения.
Ручной API встраивания
Для работы с устройствами Рутокен в Ручном режиме применяется интерфейс ru.rutoken.rttransport.RtTransport. Его инстанс можно получить с помощью метода RtPcscBridge.getTransport().
Рекомендуется следующий порядок вызова API:
Порядок | Метод | Описание | Место вызова |
---|---|---|---|
1 | RtTransport.initialize(context) | Инициализирует встраивание. Библиотека начинает отслеживать подключение и отключение устройств Рутокен (кроме подключений по NFC) и позволяет настроить дальнейшую работу с NFC | Рекомендуется:
|
2 | RtTransport.enableNfcForegroundDispatch(activity) | Включает NFC foreground dispatching для данной Activity | ТОЛЬКО из Main потока в методе Activity.onResume(). |
3 | RtTransport.handleNfcIntent(intent) | Обрабатывает NFC интент, полученный при прикладывании устройств Рутокен. Интенты от устройств других производителей не обрабатываются. Применяется для дальнейшей установки соединения с Рутокен | При получении каждого NFC интента. Например. |
4 | RtTransport.disableNfcForegroundDispatch(activity) | Выключает NFC foreground dispatching для данной Activity | ТОЛЬКО из Main потока в методе Activity.onPause() |
5 | RtTransport.finalize(context) | Завершает работу встраивания | Рекомендуется:
|
Автоматический API встраивания
Для работы в Автоматическом режиме применяется класс ru.rutoken.rttransport.RtTransportExtension. Его инстанс можно получить из метода RtPcscBridge.getTransportExtension().
Для включения Автоматического режима необходимо вызвать метод attachToLifecycle.
Пример.
Инициализация библиотеки и включение автоматического режима внутри класса-наследника Application.
public class App extends Application { @Override public void onCreate() { super.onCreate(); RtPcscBridge.setAppContext(this); RtPcscBridge.getTransportExtension().attachToLifecycle(this, true); } }
В параметры метода attachToLifecycle дополнительно можно передать флаг useAutoNfcHandling для включения/выключения автоматической обработки устройств Рутокен с NFC.
По умолчанию значение флага – true.
Автоматическая обработка устройств Рутокен с NFC осуществляется только для тех Activity, которые реализуют интерфейс OnNewIntentProvider.
Для отключения Автоматического режима применяется метод RtPcscBridge.getTransportExtension().detachFromLifecycle(app).
Если взаимодействие с устройством Рутокен осуществляется на протяжении всей работы приложения, то данный метод можно не применять.
Отслеживание подключения (отключения) устройств Рутокен
Встраивание позволяет отслеживать подключение и отключение устройств Рутокен с помощью интерфейса ru.rutoken.rttransport.RtTransport.PcscReaderObserver.
Отслеживание подключения (отключения) устройств Рутокен особенно применимо при работе через КриптоПро CSP.