Введение
Минимальный путь интеграции SDK: Подключение → Быстрый старт → Авторизация → Отображение чата → Уведомления.
Перед стартом получите у вашего администратора edna Chat Center providerUid и адреса сервера (REST / WebSocket / DataStore или cloudHost) — они доступны на вкладке «Установка» iOS-канала (подробнее). Без них инициализация SDK невозможна. Если у вас нет доступа к админке — напишите в поддержку edna.
О продукте
SDK edna Chat Center — инструмент для встраивания чата с агентами edna Chat Center в iOS‑приложение. Сообщения, полученные и отправленные через чат, доступны агентам в АРМ edna Chat Center.
Часть параметров SDK (providerUid, домены REST/WebSocket/DataStore, ключи APNs, шаблоны пуш-уведомлений, режим работы канала, опросы, маршрутизация) задаётся не в коде, а в АРМ edna Chat Center. Если параметр отсутствует в этой документации или ведёт себя неожиданно — сверьтесь с административной документацией:
- Подключение мобильного чата iOS — создание канала, APNs (.p8/.p12),
providerUid, серверные URL - Шаблоны пуш-уведомлений — формат
aps-payload и доступные плейсхолдеры - АРМ администратора — обзор — полный список разделов админки
Как работает чат
Чат открывается по кнопке, настраиваемой на вашей стороне. SDK требует явной авторизации — каждый клиент идентифицируется уникальным неизменным identifier (параметр конструктора ChatUser), благодаря которому история переписки сохраняется между сессиями.
При авторизации можно передать дополнительные атрибуты клиента через параметр data конструктора ChatUser — словарь [String: String] (например, ФИО, email, сегмент, город). Атрибуты отображаются в карточке клиента в АРМ edna Chat Center. Если данные о клиенте стали доступны позже, обновите их через метод updateData(data:). Подробнее — в разделе Управление пользователем.
Кастомизация чата
Чат кастомизируется через дизайн-систему SDK: цвета, типографика, изображения, стили компонентов и flow-сценарии. Вы можете настроить цветовую схему, шрифты, иконки, вид и текст кнопок, фон, поведение быстрых ответов и другие параметры — но только в рамках документированной поверхности. Полный перечень настраиваемых элементов и токенов — в разделе Дизайн-система.
SDK предоставляет фиксированный набор токенов и стилей; элементы, не вошедшие в этот набор (например, отдельные системные иконки, размеры некоторых сервисных экранов), кастомизировать нельзя. Часть параметров публичного API в текущей версии не применяется или работает только при определённых условиях — список см. в Известные ограничения. Перед планированием визуальных доработок убедитесь, что нужные параметры присутствуют в дизайн-системе и не помечены как ограничение.
Архитектура и ключевые компоненты
ChatCenterUISDK— фасад SDK, через который выполняются все операции: авторизация, открытие чата, отправка сообщений, обработка пушей.ChatCenterUISDKDelegate— протокол для обработки событий SDK (изменение счётчика непрочитанных, сетевые ошибки, обработка ссылок, логирование).ChatConfig— модель бизнес-настроек (функции чата, поиск, голосовые сообщения, работа сокета).ChatTransportConfig/ChatNetworkConfig— параметры подключения (REST, WebSocket, datastore, SSL pinning).ChatThemeиChatComponents— дизайн‑система: цвета, типографика, изображения и точечные стили экранов.ChatLoggerConfig,ChatLocalizationConfig— вспомогательные модели для логирования и локализации.
Полное описание классов доступно в API-справочнике docs-sdk.edna.ru/ios-docs/index.html.
Жизненный цикл интеграции
- Инициализация — создайте
ChatTransportConfig,ChatConfigи экземплярChatCenterUISDK, передавproviderUid,chatConfigи при необходимостиloggerConfig. - Настройка тем и локали — примените
ChatTheme,darkTheme,localizationConfig. - Авторизация пользователя — вызовите
authorize(user:auth:), когда в приложении доступна устойчивая идентификация клиента. - Открытие чата — получите контроллер через
getChat()(метод бросаетChatCenterUIError) и встройте его в навигацию (push/present). Чтобы открыть чат по нажатию на пуш — передайтеuserInfoпуша вgetChat(userInfo:). - Обработка уведомлений — передайте device token через статический метод
ChatCenterUISDK.setDeviceToken(_:). Чтобы отличить пуш SDK от собственных, используйтеChatCenterUISDK.isChatCenterNotification(_:). - Завершение сессии —
logout()завершает сессию на сервере (пользователь перестаёт получать пуш-уведомления; метод бросаетChatCenterUIError.userNotAuthorized, если пользователь не авторизован);deauthorizeUser()очищает только локальное состояние без серверного разлогина.
Подробнее — в разделах Подключение, Инициализация, Отображение чата и Уведомления.
Быстрый поиск: что я хочу сделать
| Задача | Метод / класс | Раздел |
|---|---|---|
| Инициализировать SDK | ChatCenterUISDK(providerUid:chatConfig:) | Инициализация |
| Авторизовать пользователя | authorize(user:auth:) | Управление пользователем |
| Открыть чат | getChat() → pushViewController | Отображение чата |
| Отправить сообщение программно | send(message: .text("...")) | Сообщения |
| Предзаполнить поле ввода | prefill(message:) | Управление пользователем |
| Получить счётчик непрочитанных | getUnreadMessagesCount(completion:) | Сообщения |
| Подписаться на события SDK | delegate = self | Делегат SDK |
| Настроить пуш-уведомления | setDeviceToken(_:) | Уведомления |
| Обработать пуш | handleNotification(userInfo:) | Уведомления |
| Кастомизировать внешний вид | theme = ChatTheme(...) | Дизайн-система |
| Сменить язык интерфейса | localizationConfig = ... | Локализация |
| Включить логирование | ChatLoggerConfig(logLevel: .all) | Логирование |
| Выйти (с отпиской от пушей) | logout() | Управление пользователем |
| Выйти (только локально) | deauthorizeUser() | Управление пользователем |
| Узнать версию SDK | ChatCenterUISDK.version | Инициализация SDK |
Навигация по документации
| Раздел | Описание |
|---|---|
| Подключение | Установка через CocoaPods, SPM или вручную |
| Быстрый старт | Минимальная интеграция от инициализации до открытия чата |
| Инициализация и настройка | ChatCenterUISDK, ChatConfig, ChatTransportConfig |
| Отображение чата | Push / present, открытие по пушу, навигация |
| Уведомления | APNs, device token, обработка пушей |
| Жизненный цикл | Полная схема интеграции и состояния SDK |
| SwiftUI | Встраивание чата в SwiftUI-приложение |
| Управление пользователем | ChatUser, ChatAuth, authorize, logout |
| Сообщения | Отправка, prefill, счётчик непрочитанных |
| Делегат SDK | ChatCenterUISDKDelegate, события и ошибки |
| Дизайн-система | Темы, токены, компоненты, flow |
| Локализация | ChatLocalizationConfig, переопределение строк |
| Логирование | ChatLoggerConfig, уровни логов |
| Обработка ошибок | ChatCenterUIError и сетевые ошибки |
| Troubleshooting | Симптомы, чеклисты, типичные ошибки |