Перейти к основному содержимому
Версия: 5.9.0

Инициализация и настройка SDK

Инициализацию SDK рекомендуется выполнять один раз при запуске приложения (например, в AppDelegate).

Конструктор ChatCenterUISDK синхронный и не выполняет сетевых запросов — он не задерживает запуск приложения. REST стартует при authorize(user:), WebSocket — при getChat().

Допускается отложенный или повторный вызов конструктора — например, при переключении между тестовым и продовым окружениями. В демо смена сервера показана в MainViewController.

Жизненный цикл SDK
  1. Инициализация SDK
  2. Авторизация пользователя
  3. Открытие чата

Основные шаги

Настройте подключение к серверу. Значения 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 — при каждом открытии чата.

Что дальше