Перейти к содержанию

Справочник по Webim Mobile SDK v3 для iOS-приложений

Редакция соответствует актуальной версии Mobile SDK 3 для iOS.

N.B.

Ответы на наиболее часто встречающиеся вопросы приведены в этой статье.

Класс Webim

Набор статических методов, которые используются при создании объекта сессии и для работы в push-уведомлениями, поступающими от сервиса Webim

Метод класса newSessionBuilder()

Метод, необходимый для получения объекта SessionBuilder, который в свою очередь необходим для создания экземпляра класса WebimSession

Метод класса parse(remoteNotification:visitorId:)

Метод, используемый для конвертирования объекта, представляющего push-уведомление в iOS-приложение, в объект класса WebimRemoteNotification.

Параметр remoteNotification — словарь типа [AnyHashable: Any] (такой же тип словаря передается в метод application(_:didReceiveRemoteNotification:) в параметр userInfo в классе AppDelegate iOS-приложения). В параметр необходимо передать значение параметра userInfo, упомянутого выше метода класса AppDelegate в не измененном виде.

Возвращает объект класса WebimRemoteNotification или nil, если значение параметра remoteNotification не соответствует формату push-уведомления, получаемого от сервиса Webim, или уведомление не содержит полезной нагрузки.

В качестве предварительной проверки, является ли параметр remoteNotification push-уведомлением, полученным от сервиса Webim, может быть вызван метод isWebim(remoteNotification:).

Метод класса isWebim(remoteNotification:)

Метод, позволяющий узнать, является ли объект, представляющий push-уведомление в iOS-приложении, push-уведомлением, полученным от сервиса Webim.

Параметр remoteNotification — словарь типа [AnyHashable: Any] (такой же тип словаря передается в метод application(_:didReceiveRemoteNotification:) в параметр userInfo в классе AppDelegate iOS-приложения). В параметр необходимо передать значение параметра userInfo, упомянутого выше метода класса AppDelegate в не измененном виде.

Возвращает булево значение: true — если значение параметра remoteNotification является полученным push-уведомлением от сервиса Webimfalse — если не является.


перечисляемый тип RemoteNotificationSystem

Системы push-уведомлений, которые могут быть переданы в качестве параметра метода экземпляра SessionBuilderset(remoteNotificationSystem:).

Случай APNS

Соответствует Apple Push Notification System.

Случай NONE

Соответствует ситуации, когда приложению не требуется получать push-уведомления от сервиса Webim.


Класс SessionBuilder

Класс, экземпляр которого используется для получения экземпляра класса WebimSession. Экземпляр класса получается методом newSessionBuilder() класса Webim.

Метод экземпляра set(notFatalErrorHandler:)

Метод, с помощью которого можно установить объект, подчиняющийся протоколу NotFatalErrorHandler, который будет ответственен за обработку ошибок при создании экземпляра сессии, которые могут быть вызваны сервисом Webim.

Параметр notFatalErrorHandler — любой класс, реализующий интерфейс NotFatalErrorHandler.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным объектом NotFatalErrorHandler. Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Метод экземпляра set(accountName:)

Метод необходим для задания названия аккаунта в системе Webim при создании сессии.

Параметр accountName — название аккаунта клиента в системе Webim. Обычно представляет из себя URL сервера (например, https://demo.webim.ru), но может иметь и вид названия аккаунта одним словом (например, demo), если сервер находится в домене webim.ru. Тип параметра — String.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным названием аккаунта.

Для получения экземпляра WebimSession вызов метода является обязательным.

Метод экземпляра set(location:)

Метод необходим для задания изначально используемой локации при создании сессии.

Параметр location — локация внутри сервиса Webim, которая будет использоваться при чате. Тип параметра — String. Скорее всего, сразу же можно использовать значения mobile и/или default. Для создания и дальнейшего использования дополнительных локаций необходимо связаться со службой поддержки сервиса Webim.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным названием используемой локации.

Для получения экземпляра WebimSession вызов метода является обязательным.

Метод экземпляра set(appVersion:)

Метод используется для задания версии клиентского приложения, если их необходимо различать в контексте сервиса Webim.

Параметр appVersion — версия клиентского приложения или nil. Тип параметра — опциональный String.

Возвращает тот же экземпляр класса SessionBuilder, но с установленной версией клиентского приложения, если параметр appVersion не nil, и не измененный экземпляр класса SessionBuilder, если параметр appVersion — nil.

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Метод экземпляра set(visitorFieldsJSONString:)

Метод используется для внутренней авторизации посетителя.

Без вызова этого метода при создании объекта сессии, пользователь будет анонимным, со случайным образом сгенерированным ID. Этот ID сохраняется в настройках приложения, и в случае потери этих настроек (например, при переустановке приложения), все данные (история сообщений) будут потеряны.

Все данные авторизованного пользователя сохраняются и будут доступны при авторизации с любого устройства.

Параметр jsonString — поля авторизационных данных пользователя в JSON-формате, тип — String. Подробную информацию об этих полях (включая, какие из них являются обязательными, и как необходимо их формировать) можно почерпнуть в этой статье.

Возвращает тот же экземпляр класса SessionBuilder, но с установленными авторизационными данными посетителя.

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Данный метод не может быть вызван одновременно с методом set(providedAuthorizationTokenStateListener:providedAuthorizationToken:).

Метод экземпляра set(visitorFieldsJSONData jsonData:)

Метод, полностью аналогичный методу set(visitorFieldsJSONString:) за исключением параметра: параметр jsonData имеет тип Data (приведенный от JSON-формата). Какой из двух методов использовать не имеет значения.

Метод экземпляра set(providedAuthorizationTokenStateListener:providedAuthorizationToken:)

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

Данный метод передает объект протокола ProvidedAuthorizationTokenStateListener и токен. Токен передавать не обязательно: если опустить второй параметр, токен будет сгенерирован библиотекой.

Возвращает тот же экземпляр класса SessionBuilder, но с установленными объектом ProvidedAuthorizationTokenStateListener и токеном клиентской системы авторизации посетителя.

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Данный метод не может быть вызван одновременно с методами set(visitorFieldsJSONString:) или set(visitorFieldsJSONData:).

Метод экземпляра set(pageTitle:)

Метод, с помощью которого можно установить заголовок чата со стороны оператора при создании экземпляра сессии. В случае, если при создании экземпляра сессии метод не был вызван, заголовок примет значение по умолчанию — iOS Client.

Параметр pageTitle — заголовок чата со стороны оператора. Тип параметра — String.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным заголовком чата со стороны оператора.

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Метод экземпляра set(fatalErrorHandler:)

Метод, с помощью которого можно установить объект, подчиняющийся протоколу FatalErrorHandler, который будет ответственен за обработку ошибок при создании экземпляра сессии, которые могут быть вызваны сервисом Webim.

Параметр fatalErrorHandler — опциональный; любой класс, подчиняющийся протоколу FatalErrorHandler, или nil, если методы протокола FatalErrorHandler в приложении использоваться не будут.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным объектом FatalErrorHandler.

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Метод экземпляра set(remoteNotificationSystem:)

Метод, с помощью которого при создании сессии можно указать, будет ли приложение получать push-уведомления от сервиса Webim и, если будет, какую систему push-уведомлений приложение будет для этого использовать. (См. перечисляемый тип RemoteNotificationSystem в классе Webim.)

Параметр remoteNotificationSystem — соответствующее значение типа RemoteNotificationSystem класса Webim.

Требует предварительно полученного экземпляра класса SessionBuilder. В случае, если данный метод вызывается, и значение параметра remoteNotificationSystem отлично от NONE, при создании экземпляра сессии вызов метода set(deviceToken:) является обязательным.

Для получения экземпляра класса WebimSession вызов метода не является обязательным. Если при создании сессии метод вызван не был, сервис Webim не будет высылать приложению push-уведомления (аналогично, как при значении параметра remoteNotificationSystem NONE).

Метод экземпляра set(deviceToken:)

Метод, с помощью которого при создании сессии можно указать токен устройства для получения приложением push-уведомлений от сервиса Webim.

Параметр deviceToken — токен устройства, использующийся для получения push-уведомлений в приложении. Тип — опциональный String в шестнадцатиричном формате, без служебных символов и пробелов.

Пример приведения значения токена устройства к нужному виду из значения в формате Data, получаемом методом application(_:,didRegisterForRemoteNotificationsWithDeviceToken:) класса AppDelegate приложения:

let deviceToken = deviceToken.map { String(format: «%02.2hhx», $0) }.joined()

Возвращает тот же экземпляр класса SessionBuilder, но с установленным значением токена устройства.

Для получения приложением push-уведомлений сервиса Webim, вызов данного метода не является достаточным: необходим также вызов метода set(remoteNotificationSystem:).

Для получения экземпляра класса WebimSession вызов метода не является обязательным.

Метод экземпляра set(isLocalHistoryStoragingEnabled:)

По умолчанию сессия сохраняет на устройстве историю сообщений (в SQLite-хранилище, связанном с приложением). Если для каких-либо целей необходимо отключить данный функционал, используется этот метод со значением параметра isLocalHistoryStoragingEnabled false.

Параметр isLocalHistoryStoragingEnabled — булева переменная, означающая необходимость хранения истории сообщений локально (значение true) или ее (необходимости) отсутствие (значение false).

Возвращает тот же экземпляр класса SessionBuilder, но с установленным вручную значением соответствующей опции.

Для получения экземпляра класса WebimSession вызов метода не является обязательным. Отсутствие вызова метода аналогично его вызову со значением параметра isLocalHistoryStoragingEnabled true.

Метод экземпляра set(isVisitorDataClearingEnabled:)

Метод, используемый для удаления всех существующих пользовательских данных во время создания экземпляра сессии.

Параметр isVisitorDataClearingEnabled — булева переменная, означающая необходимость очистить пользовательские данные (значение true) или ее (необходимости) отсутствие (значение false).

Возвращает тот же экземпляр класса SessionBuilder, но с установленным вручную значением соответствующей опции.

Для получения экземпляра класса WebimSession вызов метода не является обязательным. Отсутствие вызова метода аналогично его вызову со значением параметра isVisitorDataClearingEnabled false.

Для получения экземпляра класса WebimSession вызов метода не является обязательным

Метод экземпляра set(webimLogger:verbosityLevel:availableLogTypes:)

Метод, с помощью которого передается объект WebimLogger.

Параметр verbosityLevel — значение WebimLoggerVerbosityLevel (может быть опущен).

Параметр availableLogTypes – значение WebimLogType (может быть опущен).

Метод экземпляра build()

Метод, который вызывается в заключение перечисленных выше методов для получения экземпляра WebimSession.

Возвращает объект WebimSession с установленными параметрами с помощью остальных методов экземпляра класса.

Может выбрасывать ошибки типа SessionBuilderError.

Требует вызова методов set(accountName:) и set(location:) (в любом порядке). Также предварительно могут быть вызваны и любые другие (в любом порядке и сочетании) методы экземпляра класса SessionBuilder.

Метод класса set(multivisitorSection:)

Метод используется для получения уведомлений для разных посетителей на одном устройстве.

Параметр multivisitorSectionString.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным вручную значением соответствующей опции.

Метод класса set(webimAlert:)

Метод используется для показа предупреждений о стандартных ошибках.

Параметр webimALert — предупреждение, тип — WebimAlert.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным туда значением соответствующей опции.

Метод set(mobileChatInstance:)

Метод используется для установки новой сессии внутри мобильного приложения.

Параметр mobileChatInstanceString.

Значение по умолчанию — default.

Если вы не установите этот параметр и попытаетесь создать новую сессию внутри мобильного приложения, вы получите ту же сессию.

Возвращает тот же экземпляр класса SessionBuilder, но с установленным вручную значением соответствующей опции.


перечисляемый тип WebimLogType

Возможные типы логов. Используется в методе set(webimLogger:verbosityLevel:availableLogTypes:).

Случай networkRequest

Логи, связанные с сетевыми запросами.

Случай messageHistory

Логи, связанные с историей сообщений.

Случай manualCall

Логи, связанные с ручным вызовом методов.

Случай undefined

Неопределенный тип.


перечисляемый тип FileState

Используется для определения состояния файла.

Случай error

Возникает, когда при загрузке файла произошла ошибка.

Случай ready

Возникает, файл загружен.

Случай upload

Возникает, файл загружается.

Случай externalChecks

Файл проверяется сервером.


перечисляемый тип EditMessageError

Возможные ошибки, которые могут быть переданы в параметр error при вызове метода EditMessageCompletionHandler.onFailure(messageID:error:).

Случай UNKNOWN

Неизвестная ошибка.

Случай NOT_ALLOWED

На сервере отключена возможность редактирования сообщений.

Случай MESSAGE_EMPTY

Редактируемое сообщение пустое.

Случай MESSAGE_NOT_OWNED

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

Случай MAX_LENGTH_EXCEEDED

Сервер может отклонить запрос, если размер сообщения превышает ограничение. Максимальный размер сообщения настраивается на сервере.

Случай WRONG_MESSAGE_KIND

Посетитель может редактировать только текстовые сообщения.


перечисляемый тип WebimLoggerVerbosityLevel

Определяет степень информативности передаваемых в объект WebimLogger записей.

Случай VERBOSE

Вся доступная информация будет передана объекту WebimLogger с максимальным уровнем информативности:

  • параметры настройки сетевых соединений;

  • URL, HTTP-методы и параметры сетевых запросов;

  • HTTP-коды, полученные данные и ошибки ответов на сетевые запросы;

  • SQL-запросы и ошибки, возникающие при этих запросах;

  • полная информация, которая может быть полезна при дебаггинге, и дополнительные заметки.

Случай DEBUG

Вся необходимая для дебаггинга информация будет передана объекту WebimLogger с необходимым уровнем информативности:

  • параметры настройки сетевых соединений;

  • URL, HTTP-методы и параметры сетевых запросов;

  • HTTP-коды, полученные данные и ошибки ответов на сетевые запросы;

  • SQL-запросы и ошибки, возникающие при этих запросах;

  • полная информация, которая может быть полезна при дебаггинге с умеренным уровнем информативности.

Случай INFO

Объекту WebimLogger будет передана справочная информация, а также все предупреждения и ошибки:

  • URL, HTTP-методы и параметры сетевых запросов;

  • HTTP-коды, полученные данные и ошибки ответов на сетевые запросы;

  • SQL-запросы и ошибки, возникающие при этих запросах.

Случай WARNING

Объекту WebimLogger будут переданы только предупреждения и ошибки:

  • HTTP-коды, полученные данные и ошибки ответов на сетевые запросы;

  • SQL-запросы и ошибки, возникающие при этих запросах.

Случай ERROR

Объекту WebimLogger будут переданы только ошибки:

  • HTTP-коды и ошибки ответов на сетевые запросы, которые не закончились успехом.

перечисляемый тип SessionBuilderError

Значение типа соответствуют возможным ошибкам, которые могут возникнуть при вызове метода build() класса SessionBuilder.

Случай NIL_ACCOUNT_NAME

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

Случай NIL_LOCATION

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

Случай INVALID_AUTHENTICATION_PARAMETERS

Возникает, когда при создании сессии была произведена попытка использовать одновременно стандартную (см. методы set(visitorFieldsJSONString:) и set(visitorFieldsJSONData:)) и собственную (см. метод set(providedAuthorizationTokenStateListener:providedAuthorizationToken:)) системы авторизации посетителя.

Случай INVALIDE_HEX

Возникает, когда передается недействительная строка в HEX-формате.

Случай INVALID_REMOTE_NOTIFICATION_CONFIGURATION

Возникает, когда при создании сессии возникла неверная конфигурация push-сервиса (был задан сервис для использования при получении push-уведомлений от сервиса Webim, отличный от NONE (см. метод set(remoteNotificationSystem:) класса SessionBuilder, но не было передано значение токена устройства (или значение nil) — см. метод set(deviceToken:) класса SessionBuilder).

Случай UNKNOWN

Неизвестная ошибка.


Перечисляемый тип ButtonState

Используется для определения состояния кнопки.

Случай showing

Кнопка отображается.

Случай showingSelected

Кнопка выбрана.

Случай hidden

Кнопка скрыта.


Перечисляемый тип ButtonType

Используется для определения типа кнопки.

Случай URL

Кнопка содержит ссылку, по которой перебросит посетителя при нажатии на кнопку.

Случай insert

Кнопка содержит текст, который отправится от лица посетителя при нажатии на кнопку.


Протокол Configuration

Протокол является абстракцией, представляющей информацию о конфигурации кнопок клавиатуры чат-бота.

Метод isActive()

Метод, с помощью которого может быть получена информация активна кнопка или нет.

Возвращает true, если активна, и false, если нет. Тип — Bool.

Метод getButtonType()

Метод, с помощью которого может быть получена информация о типе кнопки.

Возвращает тип кнопки. Тип — ButtonType.

Метод getData()

Метод, с помощью которого может быть получена информация о кнопке.

Возвращает информацию о кнопке. Тип — String.

Метод getState()

Метод, с помощью которого может быть получена информация состоянии кнопки.

Возвращает информацию о состоянии кнопки. Тип - ButtonState.


Протокол FileInfo

Содержит информацию о вложениях.

Метод getContentType()

Метод, с помощью которого может быть получен MIME-тип вложения.

Возвращает MIME-тип вложения в текстовом виде или nil. Тип — опциональный String.

Метод getFileName()

Метод, с помощью которого может быть получено имя файла вложения.

Возвращает имя файла вложения в текстовом виде или nil. Тип — String.

Метод getImageInfo()

Метод, с помощью которого может быть получена информация о изображении, если вложение им является.

Возвращает объект ImageInfo или nil, если вложенный файл не является изображением.

Метод getSize()

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

Возвращает размер файла вложения в байтах или nil. Тип — опциональный Int64.

Метод getURL()

Метод, с помощью которого может быть получена ссылка для скачивания файла вложения. Ссылка действительна только для текущей сессии.

Возвращает URL файла вложения или nil.

Метод getGuid()

Метод, с помощью которого может быть получен guid файла вложения. Возвращает значение в текстовом виде. Тип — String.


Протокол Keyboard

Протокол является абстракцией, предоставляющей элементы клавиатуры чат-бота.

Метод getButtons()

Метод, с помощью которого может быть получен список кнопок элемента клавиатуры.

Возвращает список кнопок. Тип — KeyboardButton.

Метод getState()

Метод, с помощью которого может быть получено состояние клавиатуры.

Возвращает состояние клавиатуры. Тип — KeyboardState.

Метод getKeyboardResponse()

Метод, с помощью которого может быть получена кнопка, выбранная пользователем.

Возвращает кнопку, выбранную пользователем. Тип — опциональный KeyboardResponse.


Протокол KeyboardButton

Протокол является абстракцией, представляющей информацию о кнопках клавиатуры чат-бота.

Метод getId()

Метод, с помощью которого может быть получен уникальный ID кнопки в клавиатуре чат-бота.

Возвращает ID в текстовом виде. Тип — String. ID кнопки может содержать только латинские буквы, цифры, символы дефиса и нижнего подчёркивания и должен быть не более 24 символов в длину. ID кнопки, генерируемый на стороне Webim, имеет формат UUID4, а ID, генерируемый извне (в т.ч. сторонними ботами), только проверяется на соответствие данным выше критериям.

Метод getText()

Метод, с помощью которого может быть получен текст кнопки в клавиатуре чат-бота.

Возвращает название кнопки в текстовом виде. Тип — String.

Метод getConfiguration()

Метод, с помощью которого может быть получена конфигурация кнопки в клавиатуре чат-бота. Тип — опциональный Configuration.


Протокол KeyboardRequest

Протокол является абстракцией, представляющей информацию о выбранной кнопке в клавиатуре чат-бота.

Метод getButton()

Метод, с помощью которого может быть получена выбранная кнопка элемента клавиатуры.

Возвращает объект KeyboardButton.

Метод getMessageId()

Метод, с помощью которого может быть получен ID сообщения, в котором была выбрана кнопка.

Возвращает название ID сообщения в текстовом виде. Тип — String.


Протокол KeyboardResponse

Протокол является абстракцией, представляющей информацию о выбранной кнопке в клавиатуре чат-бота.

Метод getButtonId()

Метод, с помощью которого может быть получен уникальный ID выбранной кнопки в клавиатуре чат-бота.

Возвращает ID в текстовом виде. Тип — String.

Метод getMessageId()

Метод, с помощью которого может быть получен ID сообщения, в котором была выбрана кнопка.

Возвращает название ID сообщения в текстовом виде. Тип — String.


Протокол NotFatalErrorHandler

Протокол, который предоставляет методы для обработки некритических ошибок, которые могут возникать в работе сервиса Webim.

Метод on(error:)

Вызывается при возникновении некритической ошибки сервиса Webim.

Параметр error — ошибка сервиса Webim. Тип — WebimNotFatalError.

Внимание!

Данный метод вызывается не из главного потока!

Метод connectionStateChanged(connected:)

Вызывается при возникновении ошибки соединения сервиса Webim.

Внимание!

Данный метод вызывается не из главного потока!


Протокол Quote

Протокол является абстракцией, представляющей информацию о цитируемом сообщении.

Метод getAuthorId()

С помощью этого метода можно получить ID автора цитируемого сообщения.

Возвращает ID сообщения. Тип — опциональный String.

Метод getMessageAttachment()

С помощью этого метода можно получить вложение, если это файл, отправленный посетителем или оператором (FILE_FROM_OPERATOR или FILE_FROM_VISITOR).

Возвращает информацию о вложении. Тип — опциональный FileInfo.

Метод getMessageTimestamp()

С помощью этого метода можно получить время отправки сообщения.

Возвращает количество миллисекунд, прошедших с начала эпохи до обработки сообщения сервером. Тип — опциональный Date.

Метод getMessageId()

С помощью этого метода можно получить уникальный ID цитируемого сообщения.

Возвращает ID сообщения. Тип — опциональный String.

Метод getMessageText()

С помощью этого метода можно получить текст сообщения.

Возвращает текст сообщения. Тип — опциональный String.

Метод getMessageType()

С помощью этого метода можно получить тип цитируемого сообщения.

Возвращает опциональное значение перечисляемого типа MessageType.

Метод getSenderName()

С помощью этого метода можно получить имя отправителя сообщения.

Возвращает имя отправителя сообщения. Тип — опциональный String.

Метод getState()

С помощью этого метода можно получить статус цитаты.

Возвращает значение перечисляемого типа QuoteState.


перечисляемый тип QuoteState

Используется для определения состояния цитируемого сообщения.

Случай PENDING

Возникает, когда цитата загружается.

Случай FILLED

Возникает, когда цитата загружена.

Случай NOT_FOUND

Возникает, когда цитируемое сообщение не найдено на сервере.


перечисляемый тип NotFatalErrorType

Соответствует значениям возможных фатальных ошибок, которые могут возникать в работе сервиса Webim (см. метод getErrorType() интерфейса WebimNotFatalError).

Случай NO_NETWORK_CONNECTION

Эта ошибка указывает на отсутствие сетевого подключения.

Случай SERVER_IS_NOT_AVAILABLE

Эта ошибка возникает, когда сервер недоступен.


перечисляемый тип KeyboardResponseError

Возможные ошибки, которые могут быть переданы в параметр error при вызове метода KeyboardResponseCompletionHandler.onFailure(error:).

Случай UNKNOWN

Неизвестная ошибка.

Случай NO_CHAT

Кнопка из клавиатуры чат-бота отправлена не в тот чат.

Случай BUTTON_ID_NOT_SET

Не установлен идентификатор кнопки.

Случай REQUEST_MESSAGE_ID_NOT_SET

Не установлен идентификатор сообщения запроса.

Случай CAN_NOT_CREATE_RESPONSE

Невозможно создать ответ.


перечисляемый тип KeyboardRequest

Используется для определения состояния цитируемого сообщения.

Случай PENDING

Возникает, когда цитата загружается.

Случай FILLED

Возникает, когда цитата загружена.

Случай NOT_FOUND

Возникает, когда цитируемое сообщение не найдено на сервере.


перечисляемый тип KeyboardState

Используется для определения состояния цитируемого сообщения (см. метод getState() интерфейса Keyboard).

Случай PENDING

Возникает, когда клавиатура активна и кнопки могут быть нажаты.

Случай CANCELLED

Возникает, когда клавиатура неактивна и кнопки не могут быть нажаты.

Случай COMPLETED

Возникает, когда клавиатура неактивна и выбрана одна из кнопок.


Протокол EditMessageCompletionHandler

Объект, реализующий данный протокол, может быть передан в параметр completionHandler метода edit(message:text:completionHandler:) протокола MessageStream.

Метод onSuccess(messageID:)

Вызывается при успешном результате вызова метода edit(message:text:completionHandler:) протокола MessageStream.

Параметр messageID — ID соответствующего сообщения. Тип — String.

Метод onFailure(messageID:error:)

Вызывается при неуспешном результате вызова метода edit(message:text:completionHandler:) протокола MessageStream.

Параметр messageID — ID соответствующего сообщения. Тип — String.

Параметр error — ошибка, воспрепятствовавшая успешному редактированию сообщения. Тип — EditMessageError.


Протокол ProvidedAuthorizationTokenStateListener

Если клиент предоставляет собственный механизм авторизации посетителя, это может быть реализовано с помощью передачи специального токена, который используется вместо посетительских полей (см. методы set(visitorFieldsJSONString:) и set(visitorFieldsJSONData:)). В момент генерации (или получения переданного значения) этого токена, вызывается метод update(providedAuthorizationToken:). Это означает, что сервис клиента должен передать данный токен в сервис Webim.

Данный механизм — это не самодостаточная реализация. Клиентский сервис должен поддерживать и реализовывать методы передачи токена и данных посетителя в сервис Webim.

Метод экземпляра update(providedAuthorizationToken:)

Метод вызывается в двух случаях:

  1. Токен клиентского механизма авторизации передан или сгенерирован и требуется его отправка в сервис Webim силами клиента.

  2. От сервиса Webim получена информация о том, что используемый токен ему неизвестен. Это может случиться, например, если токен не был отправлен сервису Webim сервисом клиента или не был получен сервисом Webim. В этом случае сервису Webim необходимо предоставить токен и соответствующие ему данные посетителя.


Протокол WebimSession

Протокол, позволяющий производить манипуляции с текущей сессией. Экземпляр класса WebimSession получается с помощью методов класса SessionBuilder.

Метод экземпляра resume()

При создании экземпляра класса WebimSession, соответствующая ему сессия находится в приостановленном состоянии. Данный метод необходим для того, чтобы стартовать сетевую активность сессии.

Может выбрасывать ошибки типа AccessError.

Необходим для полноценного функционирования сервиса в контексте приложения.

В результате ответа сервера могут быть вызваны различные методы MessageListenerChatStateListenerCurrentOperatorChangeListener и LocationSettingsChangeListener.

Метод экземпляра pause()

Метод, который используется для приостановки сетевой активности сессии. Если сессия уже находится в приостановленном состоянии, метод не производит никаких действий.

Может выбрасывать ошибки типа AccessError.

Для вызова метода сессия не должна находиться в деактивированном состоянии.

Метод экземпляра destroy()

Метод, который используется для деактивации сессии и экземпляра класса. После вызова данного метода, никакие методы, относящиеся к сессии использованы быть не могут.

Может выбрасывать ошибки типа AccessError.

Метод экземпляра getStream()

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

Для полноценного использования методов протокола MessageStream сессия не должна быть приостановлена или деактивирована (см. методы resume()pause() и destroy()).

Метод экземпляра set(deviceToken:)

Метод используется для установки токена устрйойства для получения push-уведомлений.

Параметр deviceToken — токен устройства, использующийся для получения push-уведомлений в приложении. Тип — опциональный String в шестнадцатиричном формате, без служебных символов и пробелов.

Пример приведения значения токена устройства к нужному виду из значения в формате Data, получаемом методом application(_:didRegisterForRemoteNotificationsWithDeviceToken:) класса AppDelegate приложения:

let deviceToken = deviceToken.map { String(format: «%02.2hhx», $0) }.joined()

Может выбрасывать ошибки типа AccessError.

Для вызова метода сессия не должна находиться с приостановленном или деактивированном состоянии (см. методы resume()pause() и destroy()).

Метод destroyWithClearVisitorData()

Метод, который используется для деактивации сессии и экземпляра класса с удалением информации о пользователе. После вызова данного метода, никакие методы, относящиеся к сессии использованы быть не могут.

Может выбрасывать ошибки типа AccessError.


Протокол MessageData

Содержит прикрепленный к сообщению файл.

Метод getAttachment()

С помощью этого метода можно получить вложение, если это файл, отправленный посетителем или оператором (MessageType FILE_FROM_OPERATOR или FILE_FROM_VISITOR).

Возвращает экземпляр класса MessageAttachment или nil, если файл находится в процессе отправки.


Протокол MessageStream

Экземпляр класса, с помощью которого вызываются методы протокола, в рамках сессии существует только один и получается с помощью метода getStream() экземпляра класса WebimSession. Методы протокола используются непосредственно для взаимодействия с сервисом Webim (таких как отправка и получение сообщений).Для использования методов протокола необходимо, чтобы сессия не находилась в приостановленном или деактивированном виде (см. методы resume()pause() и destroy() класса WebimSession).

Метод send(message:completionHandler:)

Соответствует методу send(message:isHintQuestion:) с опущенным параметром isHintQuestion.

Параметр completionHandler — объект, реализующий методы протокола SendMessageCompletionHandler. Тип опциональный.

Метод sendKeyboardRequest(button:message:completionHandler:)

Метод используется для отправки выбранного элемента в клавиатуре чат-бота в сервис Webim.

Может выбрасывать ошибки типа AccessError.

Параметр button — элемент в клавиатуре чат-бота. Тип — KeyboardButton.

Параметр message — сообщение. Тип — Message.

Параметр completionHandler — объект, реализующий методы протокола SendKeyboardRequestCompletionHandler. Тип опциональный.

Метод sendKeyboardRequest(buttonID:messageCurrentChatID:completionHandler:)

Метод используется для отправки выбранного элемента в клавиатуре чат-бота в сервис Webim.

Может выбрасывать ошибки типа AccessError.

Параметр buttonID — ID элемента в клавиатуре чат-бота. Тип — String.

Параметр messageCurrentChatID — ID запрашиваемого сообщения. Тип — Message.

Параметр completionHandler — объект, реализующий методы протокола SendKeyboardRequestCompletionHandler. Тип опциональный.

Метод reply(message:repliedMessage:)

Метод используется для цитирования сообщения посетителя в сервис Webim.

Может выбрасывать ошибки типа AccessError.

Параметр message — отправляемое сообщение. Тип — String.

Параметр repliedMessage — цитируемое сообщение. Тип — Message.

Возвращает ID сообщения или nil, если сообщение не может быть цитировано.

Не требует предварительного вызова никаких других методов. Если существуют объекты MessageTracker и MessageListener, отправка сообщения вызовет метод [added(message:after:)](