Skip to content

VLprojects/livedigital-ios-sdk-binary

Repository files navigation

livedigital SDK

Этот репозиторий содержит сборки нативной реализации livedigital SDK для iOS в формате толстого бинарного XCFramework.

livedigital SDK — клиент сервиса livedigital (https://docs.livedigital.space). SDK реализует

  • сигналинг (подключение, обмен командами с медиа-сервером)
  • логику восстановления соединения при реконнекте
  • анализ качества соединения
  • работу с входящими и исходящими медиа-треками
  • работу с видео-слоями
  • размытие и замену фона для исходящего видео
  • логику выделения активного спикера
  • транспорт для передачи команд и мета-данных специфичных для приложения

Совместимость

  • устройства iOS / iPadOS 16+
  • симуляторы iOS / iPadOS 16+

Поддержка iOS 15 есть, но находится в стадии deprecated. Стабильность работы на ней не тестируется и не гарантируется. Поддержка может быть прекращена в скором времени.

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

Подключение

Доступны два способа подключения через менеджеры зависимостей — CocoaPods и SwiftPM. Мы рекомендуем использовать SwiftPM как более актуальное и современное решение.

Мы рекомендуем фиксировать точную версию зависимости (SPM: Exact Version: 2.12.3 / CP: :tag => '2.12.3') и обновлять любые зависимости по мере необходимости только вручную. Как минимум необходимо зафиксировать мажорную версию (SPM: Up to Next Major Version: 2.12.0 < 3.0.0 / CP: ~> 2.12), т.к. выпуск мажорного релиза обычно связан с необходимостью изменений в коде приложения.

Подключать зависимость нужно в таргет приложения, а также в таргеты расширений которые могут использовать SDK (например Broadcast Upload Extension для демонстрации экрана, если оно реулизуется).

Swift Package Manager

  • Подключить пакет LiveDigitalSDK из репозитория https://github.com/VLprojects/livedigital-ios-sdk-binary.git.
  • Из пакета добавить единственную публичную библиотеку LiveDigitalSDK в необходимые таргеты.

CocoaPods

Несмотря на то что livedigital SDK публикуется в CocoaPods Trunk репозиторий, мы рекомендуем подключать нашу и все остальные зависимости не из Trunk, а напрямую указывая репозиторий и конкретную версию или тег. CocoaPods Trunk будет закрыт в 2026 году, после чего там не будут публиковаться новые версии.

  • Добавить под LiveDigitalSDK в необходимые таргеты
    pod 'LiveDigitalSDK',
      :git => 'https://github.com/VLprojects/livedigital-ios-sdk-binary',
      :tag => '2.12.3'
  • Установить зависимости командой pod install --repo-update.

Пример интеграции и демо

Этот репозиторий содержит папку Example с проектом демонстрирующим интеграцию и использование livedigital SDK. Example проект выполнен в минималистичном духе и не должен рассматриваться с точки зрения удобства UX, красоты кода и архитектуры, надёжности решений и т.д.

Исходный код общий, но проектных файла два:

  • SPM_Example.xcodeproj — SDK подключено через SwiftPM. Для начала работы можно просто открыть проект.
  • CP_Example.xcworkspace — SDK подключено через CocoaPods. Перед открытием проекта (воркспейса) нужно установить зависимости выполнив команду pod install --repo-update.

Для запуска на реальном устройстве нужно предварительно настроить подписывание приложения на вкладке Signing & Capabilities в настройках таргета LiveDigitalSDKExample используя свой Apple Developer Account.

При запуске приложения показывается экран StartVC содержащий поля для ввода идентификатора спейса(группы) и комнаты.

Основная работа сосредоточена в классе SessionVC, который отвечает за сессию "звонка" или "конференции". При первом запуске будут запрошены доступы к камере и микрофону. Для сохранения простоты Example проекта, он не реализует полноценной обработки ситуации когда разрешения не выданы. После выдачи разрешений происходит подключение к комнате. В верхней части экрана отображается локальный участник с кнопками включения микрофона и камеры. Основную часть экрана занимает сетка участников с горизонтальной прокруткой.

Для простоты проверки работы SDK, в Example проекте в комнате участники видят не только друг друга, но и себя (с аудио и видео прошедшими до медиа-сервера и обратно). Таким образом можно протестировать работу SDK используюя всего одно устройство. При подключении нескольких участников к одной комнате это может мешать тестированию звука, так что можно отключить получение медиа-треков собственного участника удалив строку channelSession.shouldShowLocalPeer = true. Для удобства тестирования можно зайти в ту же комнату через веб-приложение livedigital. Сссылку на тестовую комнату можно получить у нашей команды.

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

Example приложение кроме базовой работы с SDK реализует две часто востребованные механики:

  • Обмен мета-данными участников. При старте сессии (engine.connectToChannel(...)) передаётся параметр peerPayload: ["name": UIDevice.current.name]. Передаваемое значение (словарь) может содержать набор произвольных ключей и значений, с которыми работает приложение — имя пользователя, userId в терминах приложения, версия приложения, статус пользователя и т.д.. Во время сессии пользователь может обновлять свои мета-данные через метод self.channelSession?.updatePeerPayload(...). Другие участники находящиеся в комнате могут прочитать метаданные друг друга через свойство peer.payload, а также могут получать обновления метаданных в режиме реального времени в callback метод gotPeerAppDataUpdates(_ updates:).

  • Пауза невидимых входящих видео-потоков. SDK позволяет сократить нагрзку на сеть и батарею пользователя ставя ненужные в данный момент входяшие медиа-потоки на паузу. Например если приложение свёрнуто — достаточно получать только аудио, а видео поток остановить. Если в комнате находятся 12 участников, но на экране видны только 2 — остальные 10 потоков можно поставить на паузу. Пример реализации этой механики находится в методе updateVisiblePeersVideos.

About

LiveDigitalSDK public builds (binary XCFramework)

Resources

License

Stars

Watchers

Forks