Инициализация и настройка SDK
Инициализацию SDK рекомендуется выполнять один раз при запуске приложения (например, в AppDelegate).
Конструктор ChatCenterUISDK синхронный и не выполняет сетевых запросов — он не задерживает запуск приложения. REST стартует при authorize(user:), WebSocket — при getChat().
Допускается отложенный или повторный вызов конструктора — например, при переключении между тестовым и продовым окружениями. В демо смена сервера показана в MainViewController.
- Инициализация SDK
- Авторизация пользователя
- Открытие чата
Основные шаги
Настройте подключение к серверу. Значения providerUid, rest, webSocket и dataStore выдаются edna при создании канала и доступны в АРМ администратора — см. Подключение мобильного чата iOS → Настройка установки канала. Если доступа в АРМ нет, уточните значения в технической поддержке edna.
let chatTransportConfig = ChatTransportConfig(
rest: "https://your-host.edna.ru",
webSocket: "wss://your-host.edna.ru/socket",
dataStore: "https://your-host.edna.ru/files"
)
или упрощённый конструктор для облачного развёртывания edna:
let chatTransportConfig = ChatTransportConfig(cloudHost: "your-host.edna.ru")
cloudHostПередавайте bare hostname (без схемы) — SDK сам подставит https://, wss://…/socket и https://…/files. Передача "https://your-host.edna.ru" приведёт к некорректным URL.
Передайте конфигурацию транспорта в ChatConfig:
let chatConfig = ChatConfig(transportConfig: chatTransportConfig)
Инициализируйте SDK с подготовленным chatConfig:
let chatCenterSDK = ChatCenterUISDK(providerUid: "YOUR_PROVIDER_UID",
chatConfig: chatConfig,
loggerConfig: ChatLoggerConfig(logLevel: .all))
Сохраните экземпляр на всё время работы чата (обычно совпадает со временем жизни приложения). Для доступа из любого места используйте синглтон или DI-контейнер.
Параметр appMarker
appMarker — необязательный строковый идентификатор приложения, передаваемый при инициализации:
let chatCenterSDK = ChatCenterUISDK(providerUid: "YOUR_PROVIDER_UID",
appMarker: "my-app-prod",
chatConfig: chatConfig)
Сервер использует appMarker, чтобы различать обращения от разных приложений или окружений одного провайдера (например, прод и тест, или разные бренды одного провайдера). Значение задаёт интегратор — обычно строка вида <app>-<env> (например, mybank-ios-prod). Если в вашем контуре одно приложение и одно окружение, параметр можно опустить (nil по умолчанию). Если используете маршрутизацию по appMarker, согласуйте формат значения с технической поддержкой edna.
Полный список параметров конструктора — в Настройках инициализации SDK.
Когда назначать делегат
Свойство delegate рекомендуется установить сразу после init — но не позднее authorize(user:):
chatCenterSDK = ChatCenterUISDK(providerUid: ..., chatConfig: ...)
chatCenterSDK.delegate = self
Назначение делегата до authorize(user:) гарантирует, что обратные вызовы не будут пропущены во время первой синхронизации с сервером — например, обновление счётчика непрочитанных и события сетевого состояния. Подробнее о методах делегата и потокобезопасности — в разделе Делегат SDK.
Последовательность вызовов
Шаги A–F выполняются один раз при старте приложения; шаги G–H — при каждом открытии чата.
Что дальше
- Отображение чата — авторизация пользователя и открытие чата
- Внедрение в жизненный цикл — полная схема интеграции с диаграммой
- Настройки инициализации SDK — все параметры конструктора
- Настройки SDK — параметры функционала чата
- Дизайн-система — кастомизация внешнего вида
- Подключение мобильного чата iOS (АРМ) — где взять
providerUidи серверные URL