Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Общая информация

Эта статья описывает интеграцию устройств Рутокен Описание интеграции устройств Рутокен в мобильные приложения для платформы Android   без использования приложения "Панель управления Рутокен" .

Поддерживаемые версии Android

Android 7.0 (API Level 24) и выше.

Настройка зависимостей в проекте

Для встраивания необходимо добавить в зависимости библиотеку rtpcscbridge

...

titleGradle (Groovy DSL)
Code Block
implementation 'ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0'

...

titleGradle (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
titleРучной режим

В данном режиме осуществляется явный вызов методов инициализации и финализации встраивания, а также управление считыванием устройств Рутокен с NFC.

Это обеспечивает полный контроль над поведением библиотеки со стороны приложения, например, при необходимости активации встраивания только для некоторых Activity приложения.

располагается на https://github.com/AktivCo/android-standalone-scheme-docs.

Пример приложения, которое демонстрирует работу такой интеграции https://github.com/AktivCo/rutoken-tech-android

UI Tab
titleАвтоматический режим

В данном режиме методы ручного API вызываются автоматически на определенных этапах жизненного цикла приложения.

Библиотека позволяет опционально включить автоматическую обработку NFC-устройств Рутокен для всех Activity, реализующих OnNewIntentProvider.

Остальные устройства Рутокен обрабатываются во всех Activity приложения.

Ручной 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Рекомендуемое место вызова: в методе onCreate() внутри класса-наследника Application.

Пример.
Инициализация библиотеки и включение автоматического режима: 

Code Block
languagejava
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.

Если базовый класс Activity уже реализует интерфейс OnNewIntentProvider (как в случае с ComponentActivity), то явная реализация интерфейса не обязательна.

Для отключения Автоматического режима применяется метод RtTransportExtension.detachFromLifecycle(app).

...