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

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

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

N.B.

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

Установка

CocoaPods

Для подключения Mobile Widget к вашему проекту с использованием CocoaPods добавьте в список зависимостей проекта следующую строку:

pod WebimMobileWidget

SPM

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

    https://github.com/webim/webim-mobile-ui-ios
    
  2. На следующей странице задайте правило определения версии Webim Mobile Widget: Up to Next Major.

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

Carthage

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

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

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

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

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

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

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

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

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

Настройка через CocoaPods:

  1. Откройте podfile.

  2. Добавьте следующий код:

    post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == 'WebimMobileWidget'
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] = 'TARGET_IS_EXTENSION'
          config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = 'TARGET_IS_EXTENSION=1'
          end
        end
      end
    end
    
  3. Выполните команду pod deintegrate; pod install в терминале.

    N.B.

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

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

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

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

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

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

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

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

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

        func applicationDidEnterBackground(_ application: UIApplication) {
            WidgetAppDelegate.shared.applicationDidEnterBackground()
        }
    
  2. Задайте конфигурацию сессии со связанным объектом WMSessiionConfig.

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

    WMWidgetBuilder.set(sessionConfig):
    
  3. Задайте конфигурации для объектов viewController

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

    WMWidgetBuilder.set(chatViewControllerConfig:)
    WMWidgetBuilder.set(imageViewControllerConfig:)
    WMWidgetBuilder.set(fileViewControllerConfig:)
    
  4. Вызовите WMWidgetBuilder.build() для получения объекта Webim Mobile Widget, представленного контроллером класса UIViewController.


Последнее обновление: 19 января 2026 г.