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

Настройки SDK

Конструктор

init(transportConfig: ChatTransportConfig, networkConfig: ChatNetworkConfig = .init())

ПолеТипОбязательныйОписание
transportConfigChatTransportConfigДаНастройки подключения (URL, версия API). См. Подключение
networkConfigChatNetworkConfigНет (default .init())Сетевые настройки. По умолчанию: REST/WS connection 30 с, upload 120 с, без SSL-пиннинга. См. Сетевые настройки
let chatConfig = ChatConfig(transportConfig: chatTransportConfig)
ChatConfig копируется при передаче в SDK

ChatConfigstruct, поэтому ChatCenterUISDK(chatConfig:) сохраняет копию. Мутации локальной переменной после инициализации SDK не действуют — задавайте все значения до передачи в конструктор.

Активные параметры

Параметры, не зависящие от серверного конфига:

СвойствоТипПо умолчаниюОписание
userInputEnabledBooltrueДоступность поля ввода для пользователя
shouldUseRemoteConfigBooltrueПри true серверные значения переопределяют локальные deprecated-настройки ниже
unreadMessageCountDelayInt (сек)0Интервал REST-polling счётчика непрочитанных. При 0 — без polling'а

Устаревшие параметры (server-driven)

Серверный конфиг переопределяет эти параметры

При shouldUseRemoteConfig = true (по умолчанию) серверный channelConfig переопределяет их локальные значения — для эффекта локальных значений установите shouldUseRemoteConfig = false.

Атрибут @available(deprecated) стоит в doc-комментарии, не в коде, — Xcode не показывает strikethrough или Fix-It. Ищите использование по списку ниже.

СвойствоТипПо умолчаниюОписание
searchEnabledBooltrueПоиск по истории сообщений
voiceRecordingEnabledBoolfalseЗапись и отправка голосовых сообщений
scrollToLatestBooltrueАвтопрокрутка к новым сообщениям и при возврате на экран чата с загруженной историей
linkPreviewEnabledBoolfalseГенерация превью ссылок (OpenGraph)
showAttachButtonBooltrueОтображение кнопки добавления файлов
surveyCompletionDelayInt (мс)0Задержка перед отправкой результатов опроса. Несмотря на имя без Ms, единицы — миллисекунды
historyLoadingCountInt30Количество элементов, загружаемых в запросе истории
keepSocketActiveBoolfalseДержать WebSocket активным после ухода с экрана чата
keepSocketActiveDuringOperatorSessionBoolfalseДержать WebSocket активным до закрытия диалога оператором
Влияние keepSocketActive на батарею

Активный WebSocket увеличивает фоновый расход батареи и трафика — включайте только если приложению нужен real-time счётчик непрочитанных.


Примеры

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

let chatConfig = ChatConfig(transportConfig: chatTransportConfig)

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

var chatConfig = ChatConfig(transportConfig: chatTransportConfig)
chatConfig.shouldUseRemoteConfig = false
chatConfig.keepSocketActive = true
chatConfig.unreadMessageCountDelay = 30 // резервный polling, секунды

let sdk = ChatCenterUISDK(providerUid: ..., chatConfig: chatConfig)

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

WebSocket открывается при первом getChat() (на viewDidAppear экрана чата), не при authorize(). keepSocketActive управляет закрытием, не открытием. Полная схема — в разделе Внедрение в жизненный цикл.

Исключение: registerAtFirstStart

При registerAtFirstStart = true (управляется на стороне сервера) SDK открывает WebSocket в режиме pre-registration сразу после authorize(), если в локальном хранилище нет сохранённого deviceAddress, и закрывает его до первого getChat() — кроме случая keepSocketActive = true.

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

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

Уход в фон (UIApplication.didEnterBackgroundNotification) сейчас всегда закрывает WebSocket — keepSocketActive на этот переход не влияет. При возврате в foreground вызывайте getUnreadMessagesCount(completion:), чтобы обновить счётчик непрочитанных.


Связанные разделы