ym88659208ym87991671
Миграция с SIDSDK на SIDSDK_CORE и SIDSDK_ELK | Документация для разработчиков

Миграция с SIDSDK на SIDSDK_CORE и SIDSDK_ELK

Обновлено 30 января 2026

Монолитный SIDSDK был разделен на две специализированные библиотеки для повышения модульности и гибкости интеграции:

  • SIDSDK_CORE (sid.sdk.core.*): Содержит базовую функциональность аутентификации (инициализация, настройки, кнопка входа SIDButton).
  • SIDSDK_ELK (sid.sdk.elk.*, sid.sdk.app_token.*): Содержит весь функционал, связанный с Единым Личным Кабинетом (ЕЛК) и работой с AppToken.

Данное руководство описывает необходимые шаги для перехода с единой библиотеки SIDSDK на новую разделенную архитектуру.

Шаг 1: Обновление зависимостей

Замените зависимость от SIDSDK в вашем проекте на две новые библиотеки.

Было:

implementation("io.github.sid-sdk:SIDSDK:1.8.16")

Стало:

implementation("io.github.sid-sdk:SIDSDK_CORE:1.1.0")
implementation("io.github.sid-sdk:SIDSDK_ELK:1.1.1") //Если у вас нет ЕЛК, вам не нужно имплементировать данную библиотеку

Шаг 2: Инициализация и основные настройки

Инициализация

Код инициализации SDK не изменился и остается в SIDSDK_CORE.

// В классе Application
SID.initialize.initialize(this)

Настройка основных параметров (setMainSettings)

Метод setMainSettings был изменен. Параметры partnerName и partnerProfileUrl удалены из основной конфигурации.

Было (SIDSDK):

SID.Settings.setMainSettings(
clientID = "ваш_clientID",
userID = "ваш_userID",
partnerName = "имя_партнера", // Устарело
partnerProfileUrl = "url_профиля_партнера", // Устарело
stand = StandName.PROM
)

Стало (SIDSDK_CORE + SIDSDK_ELK):

// 1. Настройка основных параметров в SIDSDK_CORE
SID.Settings.setMainSettings(
clientID = "ваш_clientID",
userID = "ваш_userID",
stand = StandName.PROM
)

// 2. Настройка URL профиля для ELK в SIDSDK_ELK
SID.ELK.setProfileUrl("url_профиля_партнера")

Шаг 3: Миграция UI-компонентов и настроек

Настройки интерфейса (SIDPreferences)

Единый класс SIDPreferences был разделен на SIDPreferencesCore и SIDPreferencesELK.

Было (SIDSDK):

val prefs = SIDPreferences(...)
SID.Settings.setUIPreferences(prefs)

Стало (SIDSDK_CORE + SIDSDK_ELK):

// 1. Настройки для CORE-компонентов
val corePrefs = SIDPreferencesCore(
themeColor = SIDColorCore(light = Color.WHITE, dark = Color.BLACK)
)
SID.Settings.setUIPreferencesCore(corePrefs)

// 2. Настройки для ELK-компонентов
val elkPrefs = SIDPreferencesELK(
primaryColor = SIDColorELK(light = Color.BLUE, dark = Color.CYAN),
fonts = SIDFontsELK(semiBoldResID = R.font.semi_bold, mediumResID = R.font.medium),
network = SIDNetworkELK(headersELK = "ваши заголовки")
)
SID.ELK.setUIPreferences(elkPrefs)

Устаревший класс CustomFonts был полностью удален. Используйте SIDFontsCore и SIDFontsELK для настройки шрифтов в соответствующих библиотеках.

Кнопка SIDButton

Компонент SIDButton остался в SIDSDK_CORE. Использование в XML и коде не изменилось, но необходимо обновить путь импорта.

Новый путь импорта:

import sid.sdk.core.auth.view.SIDButton

Отображение ЕЛК (ELKBlockFragment / ELKScreen → ELKContainerView / ELKContainer)

Устаревшие ELKBlockFragment и ELKScreen удалены. Вместо них используйте современные ELKContainerView (XML) и ELKContainer (Compose).

Было (SIDSDK) - XML:

<fragment
android:id="@+id/elk_fragment"
android:name="sid.sdk.ui.screens.view.elk.fragment.ELKBlockFragment"
... />

Стало (SIDSDK_ELK):

1. ELKContainerView (для XML):

<sid.sdk.elk.presentation.container.ELKContainerView
android:id="@+id/elk_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:containerName="offer"
app:containerVersion="3" />
// Программная настройка
val elkContainer = findViewById<ELKContainerView>(R.id.elk_container)
elkContainer.setContainerName("promo")
elkContainer.setContainerVersion(2)

2. ELKContainer (для Jetpack Compose):

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

Шаг 4: Аутентификация (SID.Login)

Основная логика авторизации осталась в SIDSDK_CORE.

  • Базовая авторизация: Методы createLoginUri, loginWithID, loginWithIDToCustomTab, getIDAuthResult и logout остаются в SID.Login.

    Метод createUriForLogin помечен как устаревший. Используйте createLoginUri.

  • Авторизация ELK Lite: Метод reLoginAuthELKLite теперь является extension-функцией в SIDSDK_ELK. Для его вызова требуются обе библиотеки.

// Требует SIDSDK_CORE для SID.Login и SIDSDK_ELK для самой функции
SID.Login.reLoginAuthELKLite(activity = this, uri = uri)

Шаг 5: Обработка событий (SID.Events)

Универсальный метод subscribeForEvents заменен на отдельные методы для каждого типа событий.

Было (SIDSDK):

SID.Events.subscribeForEvents(owner = this) { event ->
when (event) {
is AuthEvents -> { /* ... */ }
is AppTokenEvents -> { /* ... */ }
is ELKEvents -> { /* ... */ }
}
}

Стало (SIDSDK_CORE + SIDSDK_ELK):

// 1. Подписка на события авторизации (CORE)
SID.Events.subscribeForAuthEvents(owner = this) { authEvent ->
when (authEvent) {
is AuthEvents.ReLoginStatus -> { /* ... */ }
// AuthEvents.WebViewReject заменен на AuthEvents.WebAuthReject
}
}

// 2. Подписка на события AppToken (ELK)
SID.Events.subscribeForAppTokenEvents(owner = this) { appTokenEvent ->
when (appTokenEvent) {
is AppTokenEvents.Success -> { /* ... */ }
}
}

// 3. Подписка на события ELK (ELK)
SID.Events.subscribeForELKEvents(owner = this, containerName = "main") { elkEvent ->
when (elkEvent) {
is ELKEvents.ClickELK -> { /* ... */ }
}
}

Устаревшее событие AuthEvents.WebViewReject заменено на AuthEvents.WebAuthReject.

Шаг 6: Функциональность AppToken (SID.AppToken)

Весь объект SID.AppToken со всеми методами (updateAppToken, checkAppTokenForValid, goToPartnerSSO) был полностью перенесен в библиотеку SIDSDK_ELK. Использование методов осталось прежним, но теперь требует подключения SIDSDK_ELK.

Сводная таблица миграции

ФункциональностьСтарая реализация (SIDSDK 1.8.13)Новая реализация (CORE 1.0.5 + ELK 1.0.4)
ЗависимостьSIDSDKSIDSDK_CORE, SIDSDK_ELK
АвторизацияSID.LoginSID.Login (в CORE)
Репогин ELK LiteSID.Login.reLoginAuthELKLiteSID.Login.reLoginAuthELKLite (extension-функция в ELK)
AppTokenSID.AppTokenSID.AppToken (полностью перенесен в ELK)
Кнопка входаsid.sdk.auth.view.SIDButtonsid.sdk.core.auth.view.SIDButton (в CORE)
Отображение ЕЛКELKBlockFragment (устарел)ELKContainerView / ELKContainer (в ELK)
Подписка на событияSID.Events.subscribeForEventssubscribeForAuthEvents (CORE), subscribeForELKEvents и subscribeForAppTokenEvents (ELK)
Настройки UISIDPreferencesSIDPreferencesCore (CORE) и SIDPreferencesELK (ELK)
URL профиля партнераSID.Settings.setMainSettings (параметр)SID.ELK.setProfileUrl (в ELK)

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

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

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