ym88659208ym87991671
Руководство для Android-разработчика | Документация для разработчиков

Руководство для Android-разработчика

Обновлено 6 февраля 2026

Эта инструкция предназначена для разработчиков мобильных приложений на платформе Android, желающих интегрировать компонент ЕЛК (Единый Личный Кабинет) в свое приложение. Здесь подробно описан процесс интеграции и настройка внешнего вида элемента.

Шаг 1. Инициализировать SDK

Необходимо убедиться, что выполнена инициализация SDK.

Руководство по инициализации SDK для Android

Шаг 2. Настроить переход на веб-интерфейс партнера

Настройте бесшовный переход на веб-интерфейс партнера для мобильных приложений.

Подробная инструкция по настройке настройте бесшовного перехода на веб-интерфейс партнера:

Бесшовный переход из вашего приложения на сайт партнера

Шаг 3. Встроить UI ЕЛК

Для интеграции контейнера ЕЛК в ваше Android-приложение существует два основных способа:

Способ №1: Интеграция через XML

ELKContainerView — View-контейнер для отображения динамических элементов ЕЛК (ELK) на основе Jetpack Compose. Реализует гибкую систему управления контентом через XML-атрибуты и программные методы.

Основные особенности

  • Поддержка нескольких версий одного контейнера
  • Адаптивное изменение размеров и отступов
  • Обработка событий загрузки/ошибок
  • Возможность программного обновления параметров

Примеры использования

Базовый контейнер

<sid.sdk.elk.presentation.container.ELKContainerView
android:id="@+id/elk_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

Специализированный контейнер

<sid.sdk.elk.presentation.container.ELKContainerView
android:id="@+id/elk_offer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:containerName="offer"
app:containerVersion="3"
app:horizontalPadding="16"
app:elkMinimalLoaderContainerHeight="100" />

Программное управление

elkContainer.setContainerName("promo")
elkContainer.setContainerVersion(2)
elkContainer.setMinimalLoaderHeights(80)

Жизненный цикл

Контейнер автоматически:

  • Загружает данные при VISIBLE/INVISIBLE
  • Приостанавливает загрузку при GONE
  • Перезагружается при изменении параметров

Настройка через XML

АтрибутТипОписание
app:containerNameStringИмя контейнера
app:containerVersionIntegerВерсия контейнера
app:horizontalPaddingIntegerГоризонтальный отступ в dp
app:spaceUserInfoMiniIntegerОтступ под мини-профиль в dp
app:elkMinimalLoaderContainerHeightIntegerМинимальная высота лоадера в dp

Методы управления

// Установка имени контейнера (его не нужно указывать, если вы не знаете его, вероятно вам пока это не нужно)
setContainerName("offer")
// Установка версии контейнера
setContainerVersion(3)
// Установка размеров контейнера
setDimensions(
dimensions = SIDDimensionsELK(
elkHorizontalPadding = 16,
elkSpaceUserInfoMini = 8,
elkMinimalLoaderContainerHeight = 100
)
)
// Установка обработчика событий
subscribeOnContainerEvents { event ->
when(event) {
is ELKEvents.ClickELK -> handleWidgetClick(event)
is ELKEvents.WidgetErrorELK -> showErrorMessage(event)
}
}

Логика загрузки Формирование URL:

https://адрес.ру/[clientID]_[containerName]_v[containerVersion].json

  • При containerName = null → игнорируется в URL
  • При containerVersion = null → игнорируется в URL
Способ №2: Интеграция через Composable-компонент

ELKContainer — Composable-компонент для отображения динамического контента ЕЛК (ELK) на основе параметров. Реализует гибкую систему управления контентом через Jetpack Compose.

Основные особенности

  • Поддержка нескольких версий одного контейнера
  • Автоматическая обработка ошибок загрузки
  • Обработка событий кликов и ошибок
  • Обрезка длинных имен контейнеров до 36 символов

Примеры использования

Базовый контейнер

val parameters = remember {
mutableStateOf(ELKContainerParameters())
}
ELKContainer(
modifier = Modifier.fillMaxWidth(),
activity = { activity },
parameters = parameters.value,
containerEvents = { event ->
when(event) {
is ELKEvents.ClickELK -> handleWidgetClick(event.widgetName)
is ELKEvents.WidgetErrorELK -> showNetworkError(event.httpStatusCode, event.partnerErrorCode)
}
}
)

Специализированный контейнер

val offerParams = remember {
mutableStateOf(ELKContainerParameters(
containerName = "offer",
containerVersion = 3,
dimensions = SIDDimensionsELK(
elkHorizontalPadding = 16,
elkMinimalLoaderContainerHeight = 100
)
))
}
ELKContainer(
modifier = Modifier.fillMaxWidth(),
activity = { activity },
parameters = offerParams.value
)

modifier - Модификаторы для настройки размеров и поведения activity - Текущая активность для взаимодействия с UI parameters - Параметры контейнера (имя, версия, размеры) containerEvents - Обработчик событий ЕЛК

Логика загрузки Формирование URL

https://адрес.ру/[clientID]_[containerName]_v[containerVersion].json

  • Если containerName = null → игнорируется в URL
  • Если containerVersion = null → игнорируется в URL
  • Имя контейнера длиннее 36 символов автоматически обрезается

События ЕЛК

Все события доступны через:

 	 SID.Events.subscribeForELKEvents(owner = lifecycleOwner) { events ->
when(events){
is AppTokenEvents -> {"События апптокен"}
is AuthEvents -> {"События авторизации"}
is ELKEvents -> when(events){
is ELKEvents.ClickELK -> {"Событие на клик по виджету"}
is ELKEvents.ErrorELK -> {"Событие на ошибку root элемента ЕЛК"}
is ELKEvents.HideELK -> {"Событие на скрытие ЕЛК"}
is ELKEvents.ReloadELK -> {"Событие на перезагрузку ЕЛК"}
is ELKEvents.ShowELK -> {"Событие на показ ЕЛК"}
is ELKEvents.WidgetErrorELK -> {"Событие на ошибку загрузки ЕЛК элемента с бекенда партнера"}
is ELKEvents.OpenWidgetELK -> {"Событие на открытие ЕЛК элемента"}
is ELKEvents.ShowWidgetELK -> {"Событие на показ ЕЛК элемента"}
}
}
}

Подробное описание событий можно посмотреть в разделе События ЕЛК

ВАЖНО!

  • Необходимо установить userID через SID.Settings.setMainSettings(userID = "...")
  • clientID должен быть задан в SID.Settings.setMainSettings(clientID = "...")

Шаг 4. Встроить бейдж

Для интеграции бейджа в ваше Android-приложение можно воспользоваться одним из способов:

Cпособ №1: Composable-компонент для отображения динамического значка (badge)

BadgeElement Представляет собой точку входа в витрину выгод и привилегий пользователя. Саморегулирует размеры в зависимости от контента.

Ключевые особенности:

  • Автоматическая загрузка данных при монтировании через [ViewModel]
  • Отслеживание состояния загрузки ([state])
  • Обработка кликов через [BadgeIntent.ClickBadge]

Использование в Composable-компонентах

fun MyScreen() {
// Получение activity через LocalContext
val activity = remember { (LocalContext.current as? FragmentActivity) }

// Убедитесь, что контекст действительно является FragmentActivity
if (activity != null) {
BadgeElement(
activity = { activity },
modifier = Modifier.padding(8.dp),
place = Byte.MIN_VALUE // Не изменяйте вручную
)
} else {
Text("Невозможно отобразить значок")
}
}
  • activity - лямбда-функция для получения [FragmentActivity], необходимого для навигации при клике. Используется вместо прямой передачи объекта для предотвращения утечек памяти.
  • modifier - модификаторы для настройки внешнего вида компонента
  • place - не должен изменяться вручную.
Способ №2: Android-View для отображения динамического значка (badge)

BadgeView

Как работает:

  • Использует ComposeView для отрисовки Composable-компонента [BadgeElement]
  • Саморегулирует размеры в зависимости от контента
  • Отслеживает видимость через переопределенные методы [onVisibilityChanged] и [onWindowVisibilityChanged]

Ключевые особенности:

  • Поддержка реактивного UI через Compose
  • Автоматическая загрузка данных при монтировании
  • Управление видимостью через флаг containerIsVisible

Добавление через XML

 <sid.sdk.elk.badge.presentation.BadgeView
android:id="@+id/badge_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

Программное добавление

// Пример создания и добавления в родительский контейнер
val badgeView = BadgeView(context)
val parentLayout = findViewById<FrameLayout>(R.id.parent_layout)
parentLayout.addView(badgeView)
  • context - контекст, необходимый для создания View
  • attrs - атрибуты из XML (не используются в текущей реализации)
  • defStyleAttr - стиль по умолчанию (не используется)

Важные моменты при настройке мобильного SDK:

  • Установите клиентские параметры (clientID) через метод setMainSettings().
  • Используйте кастомизацию интерфейса методами типа setUIMode() и setUIPreferences() для обеспечения единого опыта пользователя.
  • Поддерживайте регулярную проверку токенов авторизации через метод checkAppTokenForValid().
  • Обрабатывайте события, подписавшись на соответствующие уведомления через API SDK.
  • Проведите тестирование всех аспектов взаимодействия приложения с сервером и сторонними элементами.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.