Skip to main content
Version: 5.7.0

Управление пользователем

Перед открытием чата в SDK обязательно должен быть установлен пользователь, для которого нужно открыть чат. Также может возникнуть необходимость этого пользователя удалить, например, при сбросе пользователем регистрации в приложении.

Для установки пользователя и управления им, в SDK есть несколько методов:

Установка пользователя

Метод для установки пользователя чата в ChatCenterUI SDK:

func authorize(user: ChatUser, auth: ChatAuth = ChatAuth())

Вызывается до открытия экрана чата, в момент, когда в родительском приложении становится известен пользователь (например, после ввода пин‑кода в банковском приложении).

Параметры:

  • user: Объект ChatUser, содержащий информацию о пользователе. (обязательный параметр)
  • auth: Настройки авторизации (если используется кастомный способ, это обговаривается при интеграции).

Пример использования:

// Создание модели пользователя
let chatUser = ChatUser(identifier: "user_uuid",
name: "Иван Иванов",
data: ["email": "ivan.ivanov@example.ru"])

// Установка пользователя в СДК
chatCenterSDK.authorize(user: chatUser)

Обновление данных пользователя

Метод для обновления данных пользователя после авторизации:

func updateData(data: [String: String]?)

Обновляет данные пользователя. Обновлённые данные будут отправлены на сервер при следующем подключении к чату.

Используется, когда данные пользователя стали известны или изменились уже после вызова authorize — например, пользователь заполнил профиль, сменил email, или приложение получило дополнительные сведения асинхронно.

Параметры:

  • data: Словарь [String: String]? с произвольными атрибутами пользователя. Передайте nil для очистки данных.

Пример использования:

// 1. Создание и авторизация пользователя с базовыми данными
let chatUser = ChatUser(identifier: "user_uuid",
name: "Иван Иванов")
chatCenterSDK.authorize(user: chatUser)

// 2. Позднее — обновление данных пользователя
chatUser.updateData(data: ["email": "ivan.ivanov@example.ru",
"segment": "premium",
"city": "Москва"])
note
  • Данные будут отправлены на сервер не сразу, а при следующем подключении к чату (открытии экрана чата или восстановлении WebSocket-соединения).
  • Метод можно вызывать на let-привязке ChatUser — мутации хранятся внутри SDK по ссылке.

Предзаполнение поля ввода

Метод для установки предварительного текста в поле ввода сообщения:

func prefill(message: String)

Устанавливает текст, который будет подставлен в поле ввода при следующем открытии экрана чата. Текст подставляется однократно — при первом вызове getChat() после вызова prefill, после чего сбрасывается.

Используется, когда нужно предложить пользователю готовый текст сообщения — например, при переходе в чат из карточки товара, раздела помощи или по deeplink.

Пример использования:

// Установка предзаполненного сообщения
chatCenterSDK.prefill(message: "Здравствуйте, у меня вопрос по заказу №12345")

// При следующем открытии чата текст будет в поле ввода
let chatController = try chatCenterSDK.getChat()
navigationController?.pushViewController(chatController, animated: true)
note
  • Текст подставляется однократно — при следующем открытии чата. Повторный вызов getChat() уже не будет содержать этот текст.
  • Передача пустой строки сбрасывает предзаполненный текст.
  • Повторный вызов prefill(message:) перезаписывает предыдущее значение.
  • При вызове logout() предзаполненный текст также сбрасывается.

Логаут пользователя

В случае сброса пользователем регистрации в приложении необходимо также вызвать логаут в SDK (например, чтобы отписать его от уведомлений о новых сообщениях в чате). Для этого нужно вызвать метод:

func logout() throws

Выполняет выход пользователя из SDK, очищая данные текущей сессии. После вызова этого метода для открытия чата потребуется повторная авторизация (через authorize).

Выбрасывает: Ошибки, если произошла проблема при логауте.

Пример использования:

do {
try chatCenterSDK?.logout()
// Пользователь успешно вышел
} catch {
print("Ошибка при выходе: \(error)")
}

Удаление пользователя

В случае необходимости локального удаления пользователя (например, пользователь выходит из авторизационной зоны на экран ввода пин‑кода) можно использовать метод:

func deauthorizeUser()

Он удаляет текущего активного пользователя и закрывает подключения к серверу. В этом случае из SDK не будет обращений к серверу до следующей авторизации. Перед повторным открытием чата необходимо авторизовать нового пользователя через метод authorize.

Пример использования:

chatCenterSDK?.deauthorizeUser()