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

Настройки SDK

Модель ChatConfig позволяет изменять настройки функционала чата и включает описанные выше модели настроек подключения и сетевых настроек.

Инициализация:

Обязательным параметром являются настройки подключения. Опционально можно передать сетевые настройки:

var chatConfig = ChatConfig(transportConfig: chatTransportConfig,
networkConfig: chatNetworkConfig) // опционально

// Настройка дополнительных параметров
chatConfig.searchEnabled = true
chatConfig.voiceRecordingEnabled = true

Параметры:

  • userInputEnabled: Bool (по умолчанию true). Доступность поля ввода для пользователя (возможность писать сообщения).

  • shouldUseRemoteConfig: Bool (по умолчанию true). Использование удалённого конфига на сервере. При включении серверные значения переопределяют локальные настройки.

  • unreadMessageCountDelay: Int (по умолчанию 0). Интервал обновления счётчика непрочитанных сообщений (в секундах). При нулевом значении счётчик не обновляется автоматически.

Параметры, дублируемые серверным конфигом (при shouldUseRemoteConfig = true значения берутся с сервера):

warning

Параметры ниже мигрируют на серверный конфиг и будут удалены в следующих версиях.

  • searchEnabled: Bool (по умолчанию true). Включает или отключает функцию поиска по истории сообщений.
  • voiceRecordingEnabled: Bool (по умолчанию false). Включает или отключает возможность записи и отправки голосовых сообщений.
  • scrollToLatest: Bool (по умолчанию true). Включает или отключает автопрокрутку до последних сообщений при поступлении новых в открытом чате.
  • linkPreviewEnabled: Bool (по умолчанию false). Включает или отключает генерацию превью ссылок в сообщениях (OpenGraph).

Клиентские параметры WebSocket (управляют поведением на стороне клиента, НЕ дублируются сервером):

Планируется к удалению

Все параметры ниже планируются к удалению в следующих версиях.

  • keepSocketActive: Bool (по умолчанию false). Если true, WebSocket-соединение будет поддерживаться активным при выходе с экрана чата. Необходимо для работы счётчика непрочитанных сообщений и программной отправки через send(message:).
  • keepSocketActiveDuringOperatorSession: Bool (по умолчанию false). WebSocket-соединение будет поддерживаться активным при выходе с экрана чата, до тех пор, пока оператор не закроет диалог.
Разница между keepSocketActive и keepSocketActiveDuringOperatorSession
ПараметрСоединение поддерживается...Подходит для
keepSocketActive = trueВсегда, пока пользователь авторизованСчётчик непрочитанных в реальном времени
keepSocketActiveDuringOperatorSession = trueТолько пока оператор не закрыл диалогУведомления в рамках активной сессии поддержки

Для постоянного счётчика непрочитанных используйте keepSocketActive.

  • surveyCompletionDelay: Int (по умолчанию 0). Задержка на отправку результатов опроса (за это время пользователь может менять свой выбор).
  • historyLoadingCount: Int (по умолчанию 30). Количество элементов, загружаемых в запросе истории.
  • showAttachButton: Bool (по умолчанию true). Отображение кнопки добавления файлов.

Примеры типичных конфигураций

Минимальная (рекомендуется для старта)

let chatConfig = ChatConfig(transportConfig: chatTransportConfig)
// Все параметры используются по умолчанию

С постоянным счётчиком непрочитанных

var chatConfig = ChatConfig(transportConfig: chatTransportConfig)
chatConfig.keepSocketActive = true // держать WebSocket активным
chatConfig.unreadMessageCountDelay = 30 // резервный polling, секунды

Режим "только чтение"

var chatConfig = ChatConfig(transportConfig: chatTransportConfig)
chatConfig.userInputEnabled = false // запретить ввод сообщений

Для программной отправки сообщений через send()

var chatConfig = ChatConfig(transportConfig: chatTransportConfig)
chatConfig.keepSocketActive = true // обязательно, иначе ошибка .webSocketNotActive

Жизненный цикл WebSocket-соединения

WebSocket-соединение используется SDK для обмена сообщениями в реальном времени. Понимание его жизненного цикла важно для правильной настройки параметров keepSocketActive, keepSocketActiveDuringOperatorSession и unreadMessageCountDelay.

Диаграмма состояний

Поведение в зависимости от настроек

Состояние приложенияkeepSocketActive = false (по умолчанию)keepSocketActive = truekeepSocketActiveDuringOperatorSession = true
Чат открытWebSocket активенWebSocket активенWebSocket активен
Чат закрыт, пользователь авторизованWebSocket закрытWebSocket активенWebSocket активен (до закрытия диалога оператором)
Чат закрыт, диалог завершён операторомWebSocket закрытWebSocket активенWebSocket закрыт
После logout() / deauthorizeUser()WebSocket закрытWebSocket закрытWebSocket закрыт

Взаимодействие с другими параметрами

ПараметрТребует WebSocketОписание
send(message:)ДаБез активного WebSocket выбросит .webSocketNotActive
unreadMessageCountDelayНет (HTTP-polling)Работает независимо от WebSocket, запрашивает счётчик по REST API
ChatCenterUISDKDelegate.didChangeUnreadMessagesДа (для real-time)При keepSocketActive = true вызывается в реальном времени; при false — только когда чат открыт
getUnreadMessagesCount(completion:)НетРазовый запрос по REST API, не зависит от WebSocket

Рекомендации по выбору

СценарийНастройка
Счётчик непрочитанных в реальном времени (бейдж)keepSocketActive = true (опционально: unreadMessageCountDelay как резерв)
Уведомления только в рамках активного диалогаkeepSocketActiveDuringOperatorSession = true
Периодический опрос счётчика без постоянного соединенияunreadMessageCountDelay = 30
Минимальное потребление ресурсовОставить значения по умолчанию
Влияние на батарею

Постоянное WebSocket-соединение (keepSocketActive = true) увеличивает расход батареи. Используйте его только если вашему приложению действительно нужен счётчик непрочитанных в реальном времени.