# Имплементация Webim Mobile Widget в iOS-приложение

**Webim Mobile Widget** является простейшей интеграцией чата в мобильное приложение, основанной  на **Webim Mobile SDK**,

!!! Note "N.B."
    iOS-версия **Webim Mobile Widget** использует компонент **WebimMobileKeyboard**. Он подключается вместе с виджетом (как его зависимость) и отдельно обычно не устанавливается. Репозиторий: <https://github.com/webim/webim-mobile-keyboard-ios>. Для Android отдельной версии **WebimMobileKeyboard** нет.

## Установка

### SPM

  1. Откройте в своём проекте меню выбора зависимостей (**Select File** -> **Swift Packages** -> **Add Package Dependency**). В этом меню откройте диалоговое окно **Choose Package Repository**, после чего введите в него ссылку на репозиторий **Webim Mobile Widget**:

    ```
    https://github.com/webim/webim-mobile-ui-ios
    ```

  1. На следующей странице задайте правило определения версии **Webim Mobile Widget**: **Up to Next Major**.

  1. После того как **Xcode** проверит источник и определит версию **Webim Mobile Widget**, Вы сможете выбрать библиотеку `WebimMobileSDK` и добавить её в Ваше целевое приложение.

### Carthage

Добавьте следующую строку в Ваш **Cartfile**:

```
github "webim/webim-mobile-ui-ios" ~> 1.0.2
```

### Важная информация

Если вы хотите использовать Widget как расширение, Вы должны предварительно задать настройки проекта соответствующим образом.

Настройка вручную:

  1. Перейдите в настройки проекта, меню **Build Settings** -> **Swift Compiler Flags**.

  1. Добавьте значение `TARGET_IS_EXTENSION` для настройки **Active Compilation Conditions**.

  1. Перейдите во вкладку **Build Settings** -> **Apple Clang Preprocessing**.

  1. Добавьте значение `TARGET_IS_EXTENSION` для настройки **Preprocessor Macros**.

    !!! Note "N.B."
        Обратите внимание, что некоторые функции при использовании виджета как расширения недоступны.

### Разрешение на доступ к фотогалерее

Для корректной работы выбора изображений (отправка файлов/фотографий из галереи) iOS-приложение должно иметь разрешение на доступ к фотогалерее.

В файл `Info.plist` необходимо добавить ключ `NSPhotoLibraryUsageDescription` с текстом, поясняющим пользователю причину запроса доступа:

```xml
<key> NSPhotoLibraryUsageDescription </key>
<string> Необходимо для отправки изображений в чат службы поддержки </string>
```

Если в `Info.plist` отсутствует ключ `NSPhotoLibraryUsageDescription`, iOS не разрешит приложению доступ к фотогалерее и при попытке его получить может завершить приложение с ошибкой. Поэтому при использовании Webim Mobile Widget с отправкой изображений из галереи обязательно добавьте этот ключ в `Info.plist`.

## Использование

  1. Добавьте приведённый ниже код в `AppDelegate.swift`.

     Данный код предотвращает некорректное поведение клавиатуры:

     ```
         func applicationDidEnterBackground(_ application: UIApplication) {
             WidgetAppDelegate.shared.applicationDidEnterBackground()
         }
     ```

  1. Задайте конфигурацию сессии со связанным объектом `WMSessionConfig`.

     Этот метод **необходимо** вызвать для корректного поведения виджета:

     ```
     WMWidgetBuilder.set(sessionConfig):
     ```

  1. Задайте конфигурации для объектов `viewController`

     Если Вы пропустите вызовы этих методов, **Webim Mobile Widget** будет использовать конфигурации объектов `viewController` по умолчанию:

     ```
     WMWidgetBuilder.set(chatViewControllerConfig:)
     WMWidgetBuilder.set(imageViewControllerConfig:)
     WMWidgetBuilder.set(fileViewControllerConfig:)
     ```

  1. Вызовите `WMWidgetBuilder.build()` для получения объекта **Webim Mobile Widget**, представленного контроллером класса `UIViewController`.

---

Источник: https://webim.ru/kb/mobile/webim-widget/ios-widget-install.html
