# Информация о выпусках (Release notes) Webim Mobile SDK v4.0 для iOS

Ниже представлен список выпусков **Webim Mobile SDK 4** для **iOS**.

!!! Note "Совместимость с Webim Server"
    **Webim Mobile SDK 4.0** рассчитан на работу с **Webim Server** не ниже `10.5.30`. Ряд возможностей (конфигурация форм контактов, подписи полей посетителя, «облегчённый» режим с подсчётом непрочитанных без полноценной сессии чата, расширенные ресурсы локализации и т.д.) опирается на API и настройки ветки **10.8** и новее — ориентируйтесь на **Webim Server 10.8+**, если используете эти функции.

## 4.0.0

Общая линия релиза — ускорение работы SDK, более предсказуемая обработка ошибок при старте, прозрачный прогресс передачи файлов, расширенная работа с серверной конфигурацией (в том числе формы контактных данных и подписи полей) и дополнительные точки кастомизации без форка библиотеки.

  * **Производительность и API.** Повышена производительность библиотеки. Удалены константы в формате `SCREAMING_SNAKE_CASE`. Удалён метод `closeChat()` — сценарии закрытия чата следует реализовывать через актуальные методы потока сообщений и состояние чата.

  * **Форма контактных данных (pre-chat).** Данные формы можно передавать при создании сессии (`SessionBuilder.set(prechat:)`) и досылать из потока (`MessageStream.set(prechatFields:)`). Структура полей и правила отображения согласуются с настройками размещения на сервере; через [`MessageStream.getServerSideSettings(completionHandler:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#get-server-side-settings) доступны объекты [`ServerSettings`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#server-settings) / [`ChatConfig`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#chat-config) / [`ContactsSettings`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#contacts-settings).

  * **Прогресс загрузки и скачивания файлов.** Для вложений доступен ход передачи в процентах: [`MessageAttachment.getDownloadProgress()`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#message-attachment) (в том числе для исходящих загрузок прогресс отражается в обновлениях вложения). При отправке файлов используется механизм уведомления сервера о прогрессе (`SendFileProgressState` и связанные действия).

  * **Конфигурация и типы настроек сервера.** Расширена модель серверных настроек: [`ServerSettings`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#server-settings) включает [`AccountConfig`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#account-config), [`ChatConfig`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#chat-config), [`ResourcesConfig`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#resources-config) и др. Это упрощает чтение лимитов, текстов интерфейса и параметров форм из одного ответа.

  * **Кастомные модули и интеграции.** Для передачи в запросах к серверу дополнительных параметров (например, идентификаторов сценария или модуля на стороне вашей инфраструктуры) используется [`SessionBuilder.set(requestHeader:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#set-request-header). Требования к заголовкам задаются при использовании соответствующих возможностей **Webim Server**.

  * **Ошибки при старте и инициализации.** Ошибки инициализации сессии приводят к типу [`FatalErrorType.initializationFailed`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#fatal-error-type) в [`FatalErrorHandler`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#fatal-error-handler). Для нефатальных сетевых сценариев по-прежнему используется [`NotFatalErrorHandler`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#not-fatal-error-handler). Опционально можно подключить [`WebimAlert`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#webim-alert) для стандартизированных уведомлений об ошибках.

  * **Опрос после консультации (resolution survey).** Доработан сценарий опроса качества после диалога («Ромео и Джульетта»): методы [`sendResolutionSurvey`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#message-stream-sendresolutionsurvey-idanswercompletionhandler), [`getLastResolutionSurveyWith(operatorId:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#message-stream) и связанные протоколы согласованы с сервером 10.8.

  * **Непрочитанные без активной сессии чата.** В режиме с [`InfoListener`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#info-listener) SDK опрашивает сервер и вызывает [`update(newMessageCount:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#info-listener) с количеством непрочитанных сообщений посетителя — без необходимости создавать полноценную сессию чата (требуется поддержка со стороны **Webim Server**).

  * **Имена пользовательских полей посетителя.** Метод [`ChatConfig.getVisitorFieldLabels()`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#chat-config) возвращает соответствие идентификаторов полей и локализованных подписей, заданных в настройках аккаунта.

  * **Локализация интерфейса.** Строки интерфейса, доступные через [`ResourcesConfig`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#resources-config) (например, тексты прощания, первого вопроса, заголовка оператора и т.д.), дополняют локализацию на стороне приложения и позволяют выровнять подписи с языковыми настройками сервера при поддержке всех доступных для Webim языков.

  * **Быстрая кастомизация.** Наряду с [`set(requestHeader:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#set-request-header) для сетевого уровня приложение может задавать [`set(pageTitle:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#set-page-title), [`set(appVersion:)`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#set-app-version), подключать [`WebimLogger`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#set-webim-logger) / [`WebimAlert`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#webim-alert) и считывать темы оформления из [`ServerSettings`](https://webim.ru/kb/mobile/sdk/v-4-0/ios-sdk-handbook.html#server-settings), сокращая объём ручной настройки в коде.

---

Источник: https://webim.ru/kb/mobile/sdk/v-4-0/ios-release-notes.html
