iOS SDK
Настройка UI
Вызовы всех методов SDK iOS должны выполняться из главного (UI) потока приложения. Поскольку эти методы тесно связаны с UI и внутренними процессами SDK, их вызов из других потоков приводят к непредсказуемому поведению приложения.
Для настройки пользовательского интерфейса используйте метод SID.Settings.applyUIPreferences()
Важно: если параметры не заданы, будут автоматически применены значения по умолчанию.
Все параметры опциональны
| Объект | Тип | Описание |
|---|---|---|
texts | SIDTextsELK? | Тексты ошибок (заголовок, описание, текст кнопки) |
themeColor | SIDColorELK? | Акцентный цвет, используемый в интерфейсе.Сейчас цвет используется для:номера телефона+стрелочка в блоке пользователя;инициалы для аватарки и 0.2 цвета используют для фона аватарки (если цвета не указаны непосредственно в параметрах виджета)кнопки на экране ошибки |
primaryColor | SIDColorELK? | Основной цвет текстов используемых в интерфейсе. |
secondaryColor | SIDColorELK? | Вторичный цвет текстов используемых в интерфейсе. |
warningColor | SIDColorELK? | Цвет предупреждений |
widgetBackgroundColor | SIDColorELK? | Цвет фона виджетов |
fonts | SIDFontsELK? | Настройки шрифтов |
network | SIDNetworkELK? | Сетевые заголовки для запросов к бэкенду партнёра |
elkErrorType | SIDErrorTypesELK? | Тип ошибки ЕЛК (например, NONE, TYPE_1 и т.д.) |
dimensions (iOS) | SIDDimensions? | Отступы ЕЛК |
Цвет — SIDColorELK
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
light | 0–1 | Int | Цвет для светлой темы |
dark | 0–1 | Int | Цвет для тёмной темы |
Шрифты — SIDFontsELK
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
semiBoldResID | 0–1 | Int | Идентификатор ресурса полужирного шрифта (R.font.xxx) |
mediumResID | 0–1 | Int | Идентификатор ресурса среднего шрифта (R.font.xxx) |
Текст ошибки — SIDTextsELK
| Параметр | Обязательность | Тип | Описание | Значение по умолчанию |
|---|---|---|---|---|
titleError | 0–1 | String | Заголовок ошибки | "Ой, ошибочка вышла" |
descriptionError | 0–1 | String | Описание ошибки | "Загляните сюда позже — успеем загрузить к вашему возвращению" |
buttonError | 0–1 | String | Текст кнопки ошибки | "Попробовать снова" |
Тип экрана ошибки — SIDErrorTypesELK
| Параметр | Обязательность | Тип | Описание | Возможные значения |
|---|---|---|---|---|
named | 0–1 | String | Идентификатор типа ошибки |
|
Отступы — SIDDimensionsELK (iOS)
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
elkHorizontalPadding | 0–1 | Int | Горизонтальные отступы от краёв всего ЕЛК-контейнера |
elkSpaceUserInfoMini | 0–1 | Int | Отступ справа в виджете USER_INFO_MINI |
Настройки сетевых запросов - SIDNetwork
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
headersELK | 0–1 | android - Map String, String<b/>iOS - [String: String] | Авторизационные хедеры Партнера |
Применить UI настройки
public func applyUIPreferences(preferences: SIDUIPreferences) {
staticStorageService.uiPreferences.merge(with: preferences)
}
let preferences = SIDUIPreferences(
texts: SIDTexts(
titleError: "titleError",
descriptionError: "descriptionError",
buttonError: "buttonError"
),
themeColor: SIDColor(
light: .black,
dark: .white
),
primaryColor: SIDColor(
light: .black,
dark: .white
),
secondaryColor: SIDColor(
light: .black,
dark: .white
),
fonts: SIDFonts(
semiboldFont: UIFont(name: "1stFont", size: 15),
mediumFont: UIFont(name: "1stFont", size: 15)
),
elkErrorType: .type1
)
SID.settings.applyUIPreferences(preferences: preferences)
Реализовать делегат
Необходимо реализовать делегат SIDTableViewHeightDelegate, который будет обновлять высоту ячейки в зависимости от содержимого и SIDAnalyticEventHandler для сбора аналитики
Пример:
final class PCViewController: UIViewController, SIDTableViewHeightDelegate, SIDAnalyticEventHandler {
private var personalCabinetManager = SIDPersonalCabinetManager()
private var tableView: UITableView?
func updateHeight() {
tableView?.beginUpdates()
tableView?.endUpdates()
}
func handleOpeningEvent(url: String) {
// Обработка аналитического события
}
private func personalCabinetCell() -> UITableViewCell
let tableCell = UITableViewCell()
tableCell.contentView.addSubview(tableView)
personalCabinetManager.heightDelegate = self
personalCabinetManager.analyticEventHandler = self
return tableCell
}
}