Миграция с SIDSDK на SIDSDK_CORE и SIDSDK_ELK
Монолитный 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) |
|---|---|---|
| Зависимость | SIDSDK | SIDSDK_CORE, SIDSDK_ELK |
| Авторизация | SID.Login | SID.Login (в CORE) |
| Репогин ELK Lite | SID.Login.reLoginAuthELKLite | SID.Login.reLoginAuthELKLite (extension-функция в ELK) |
| AppToken | SID.AppToken | SID.AppToken (полностью перенесен в ELK) |
| Кнопка входа | sid.sdk.auth.view.SIDButton | sid.sdk.core.auth.view.SIDButton (в CORE) |
| Отображение ЕЛК | ELKBlockFragment (устарел) | ELKContainerView / ELKContainer (в ELK) |
| Подписка на события | SID.Events.subscribeForEvents | subscribeForAuthEvents (CORE), subscribeForELKEvents и subscribeForAppTokenEvents (ELK) |
| Настройки UI | SIDPreferences | SIDPreferencesCore (CORE) и SIDPreferencesELK (ELK) |
| URL профиля партнера | SID.Settings.setMainSettings (параметр) | SID.ELK.setProfileUrl (в ELK) |