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

ChatConfig

ChatConfig — основной контейнер конфигурации SDK. Передаётся в ChatCenterUI.init(...) или ChatCenterUI.initAsync(...) и определяет настройки сети, push, поля ввода и разрешений.

к сведению

Сетевые таймауты, SSL pinning и подключение к backend настраиваются в отдельных конфигах: transport_config, network_config.

Параметры конструктора

val chatConfig = ChatConfig(
transportConfig = ChatTransportConfig(cloudHost = "https://your.edna.ru"),
networkConfig = ChatNetworkConfig()
)

Конструктор ChatConfig принимает 14 параметров — большинство опциональны.

ПараметрТипИзменяемоеОбязательныйПо умолч.Описание
transportConfigChatTransportConfigvalДаНастройки подключения к серверу. См. Transport config
networkConfigChatNetworkConfigvalДаНастройки таймаутов и SSL. См. Network config
keepWebSocketActiveBooleanvarНетfalseДержать WebSocket открытым после закрытия чата. Устарело — управляется сервером.
searchEnabledBooleanvarНетfalseПоиск сообщений. Устарело — управляется сервером.
attachmentsEnabledBooleanvalНетtrueПоказывать кнопку добавления вложений
linkPreviewEnabledBooleanvarНетfalseПревью ссылок (OpenGraph). Устарело — управляется сервером.
voiceRecordingEnabledBooleanvarНетfalseГолосовые сообщения. Устарело — управляется сервером.
permissionsDescriptionDialogsEnabledBooleanvalНетfalseПоказывать диалоги с объяснением причин запроса разрешений
autoScrollToLatestBooleanvalНетfalseАвтопрокрутка к последним сообщениям. Устарело — управляется сервером.
notificationImportanceIntvalНетIMPORTANCE_DEFAULTПриоритет уведомлений для notification channel. Применяется на Android 8.0 (API 26) и выше; на более ранних версиях значение игнорируется. См. предупреждение под таблицей
surveyCompletionDelayIntvalНет3Задержка скрытия опроса, секунды. Устарело — управляется сервером.
inputEnabledDuringQuickRepliesBooleanvalНетfalseРазрешить ввод текста при отображении быстрых ответов
pendingIntentCreatorPendingIntentCreatorvarНетОткрытие ChatActivityСпособ сборки PendingIntent при клике на уведомление. См. пример ниже
keepSocketActiveDuringOperatorSessionBooleanvarНетfalseДержать WebSocket, пока есть открытый диалог с оператором. Устарело — управляется сервером.

Полный список устаревших параметров и их замен на серверные настройки — см. раздел Устаревшие параметры.

notificationImportance применяется только при создании канала

Android регистрирует notification channel один раз. После первого пуша канал создан, и последующие изменения notificationImportance на него не повлияют — до переустановки приложения или ручного сброса канала в настройках Android.

userInputEnabled

userInputEnabled задаётся только на готовом экземпляре ChatConfig — в конструктор оно не входит.

СвойствоТипПо умолч.Описание
userInputEnabledBooleantrueДоступность поля ввода для пользователя. Поле не объявлено @Volatile: запись из фонового потока не гарантирует видимость значения в чате.
val chatConfig = ChatConfig(
transportConfig = transportConfig,
networkConfig = networkConfig
)
chatConfig.userInputEnabled = false // временно заблокировать поле ввода

PendingIntentCreator

По умолчанию клик по уведомлению открывает встроенную ChatActivity. Если в приложении уже есть хост-Activity, через которую открывается чат, замена pendingIntentCreator помогает избежать открытия двух экземпляров чата.

create() вызывается из NotificationWorker (WorkManager) на фоновом потоке — обращаться к UI внутри метода нельзя. Параметр appMarker приходит из push-сообщения и может быть null (в частности, для кампанийных уведомлений) или пустой строкой.

chatConfig.pendingIntentCreator = object : PendingIntentCreator {
override fun create(context: Context, appMarker: String?): PendingIntent? {
val intent = Intent(context, HostActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
putExtra("open_chat", true)
}
var flags = PendingIntent.FLAG_CANCEL_CURRENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
flags = flags or PendingIntent.FLAG_IMMUTABLE
}
// requestCode должен быть уникален: одинаковое значение для разных Intent'ов
// приведёт к взаимной перезаписи PendingIntent в системе.
return PendingIntent.getActivity(context, Random().nextInt(), intent, flags)
}
}
примечание

FLAG_IMMUTABLE доступен с Android 6.0 (API 23). На Android 12 (API 31) и выше при targetSdk = 31+ PendingIntent.getActivity() требует, чтобы был указан один из флагов: FLAG_IMMUTABLE или FLAG_MUTABLE — иначе бросает IllegalArgumentException. Guard по SDK_INT >= M в примере оставлен для совместимости с minSdk < 23.

Поля, унаследованные от ChatConfigCore

Эти поля унаследованы от базового класса ChatConfigCore и доступны на экземпляре ChatConfig через наследование. Они read-only: ни передать в конструктор ChatConfig(...), ни переприсвоить нельзя.

СвойствоТипПо умолч.Описание
historyLoadingCountInt30Количество сообщений, загружаемых при подгрузке истории. Устарело — управляется сервером.
isShowClientFullNameInMessageBooleantrueПоказывать полное имя клиента в сообщениях или «Вы»

Устаревшие параметры (deprecated)

Параметры конструктора, помеченные @Deprecated — значения теперь приходят с сервера.

ПараметрПо умолч.ЗаменаПримечание
keepWebSocketActivefalseСерверная настройкаНа Android 15+ (targetSdk = 35) фоновое подключение не разрешено системой, если приложение не в foreground. На более ранних версиях подвержено Doze, App Standby и ограничениям фоновой сети
keepSocketActiveDuringOperatorSessionfalseСерверная настройка
searchEnabledfalseСерверная настройкаПоиск по истории
linkPreviewEnabledfalseСерверная настройкаПревью ссылок (OpenGraph)
voiceRecordingEnabledfalseСерверная настройкаЗапись голосовых сообщений
autoScrollToLatestfalseСерверная настройкаАвтопрокрутка
surveyCompletionDelay3Серверная настройкаЗадержка скрытия опроса (секунды)

Поле historyLoadingCount тоже помечено @Deprecated, но передать его в конструктор ChatConfig нельзя — оно остаётся на дефолте 30. См. Поля, унаследованные от ChatConfigCore.

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