Реализация AirPlay-стриминга из мобильного приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация AirPlay-стриминга из мобильного приложения
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация AirPlay-стриминга из мобильного приложения

AirPlay — протокол Apple для беспроводной передачи аудио и видео на Apple TV, HomePod, AirPlay 2-совместимые телевизоры и колонки. Если приложение играет медиа через AVPlayer, базовый AirPlay работает без дополнительного кода — но только базовый.

Что работает само, а что нужно настраивать

AVPlayer автоматически поддерживает AirPlay при player.allowsExternalPlayback = true (значение по умолчанию — true). Пользователь видит иконку AirPlay в системном Control Center, выбирает устройство — видео переключается.

Что не работает без кода:

  • Кнопка AirPlay прямо в интерфейсе приложения
  • Обработка смены устройства воспроизведения
  • Контроль над тем, что именно передаётся (роут видео на TV, аудио на HomePod)

AVRoutePickerView: кнопка AirPlay в UI

AVRoutePickerView — системный компонент, показывает стандартный список доступных устройств:

let routePickerView = AVRoutePickerView()
routePickerView.tintColor = .white
routePickerView.activeTintColor = .systemBlue
routePickerView.prioritizesVideoDevices = true // показывает AirPlay-TV выше колонок

Добавляем прямо в UI плеера — никаких дополнительных разрешений не нужно, пикер — системный.

Мониторинг маршрута воспроизведения

При подключении к AirPlay-устройству нужно адаптировать UI: скрыть кнопку разворачивания на весь экран (видео уже на TV), показать индикатор «Передаётся на...».

NotificationCenter.default.addObserver(
    forName: AVAudioSession.routeChangeNotification,
    object: nil, queue: .main
) { notification in
    guard let reason = notification.userInfo?[AVAudioSessionRouteChangeReasonKey] as? UInt,
          let changeReason = AVAudioSession.RouteChangeReason(rawValue: reason) else { return }

    switch changeReason {
    case .newDeviceAvailable:
        let outputs = AVAudioSession.sharedInstance().currentRoute.outputs
        let isAirPlay = outputs.contains { $0.portType == .airPlay }
        self.updateUIForAirPlay(isAirPlay)
    case .oldDeviceUnavailable:
        self.updateUIForAirPlay(false)
    default: break
    }
}

player.isExternalPlaybackActive — флаг, что видео сейчас передаётся на внешний экран. При true — основной экран телефона показывает заглушку «Воспроизводится на Apple TV», а не чёрный экран.

AirPlay 2 и многокомнатный звук

AirPlay 2 позволяет воспроизводить аудио одновременно на нескольких устройствах. Для поддержки в приложении: AVAudioSession категория .playback или .playAndRecord — это всё, что нужно. Система сама управляет мультироутингом.

Ограничения

AirPlay — только iOS/macOS. Для Android-приложений аналог — Chromecast (Google Cast SDK). Если нужна кросс-платформенность — реализуем оба протокола.

Видео с DRM (FairPlay) через AirPlay передаётся только на устройства с поддержкой FairPlay. Apple TV поддерживает, большинство сторонних AirPlay-устройств — нет. Пользователь видит ошибку воспроизведения — это ограничение Apple, обойти нельзя.

AirPlay для аудио: отдельный маршрут

При передаче видео на AirPlay-устройство аудио может остаться на телефоне или уйти вместе с видео — зависит от настройки AVAudioSession. Для правильного поведения (аудио и видео вместе на AirPlay-устройстве): AVAudioSession.Category.playback без allowBluetoothA2DP. Если нужно оставить аудио на телефоне при видео на TV — задаём AVAudioSession.setCategory(.playback, options: [.allowAirPlay]) и настраиваем preferredInput.

Тестирование без физического Apple TV

Network.framework позволяет эмулировать Bonjour-сервис в симуляторе для базового тестирования. Но полноценный AirPlay тест требует физического устройства — Apple TV, HomePod или AirPlay 2-совместимого телевизора. Для CI/CD автоматически тестировать AirPlay-функциональность нельзя — только ручная проверка.

Сроки

Кнопка AirPlay в UI + мониторинг маршрута + корректное отображение заглушки — 1–2 дня.