Інтеграція Chromecast-стрімінгу в мобільний додаток

Позначимо: коли користувач натискає Cast, контент має з'явитися на великому екрані миттєво. Але реалізація цієї кнопки — нетривіальне завдання: інтеграція Google Cast SDK, налаштування сесії, обробка втрати з'єднання, керування паузою та перемотуванням. Пристрої мають бути в одній мережі, а додаток

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Chromecast-стрімінгу в мобільний додаток
Середній
~2-3 дні

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Позначимо: коли користувач натискає Cast, контент має з'явитися на великому екрані миттєво. Але реалізація цієї кнопки — нетривіальне завдання: інтеграція Google Cast SDK, налаштування сесії, обробка втрати з'єднання, керування паузою та перемотуванням. Пристрої мають бути в одній мережі, а додаток — пройти App Store Review Guidelines (Section 4.2). Ми вирішуємо це за вас. Наш досвід — 5+ років у мобільній розробці та 15+ проєктів з Chromecast-стрімінгом. Використовуємо перевірені патерни, гарантуємо стабільну роботу на Android та iOS. Час виходу на ринок скорочується на 30% завдяки готовим компонентам. Економія бюджету на старті може сягати 40% при використанні Default Media Receiver.

Як реалізувати Chromecast-стрімінг за 2–3 дні?

Найшвидший шлях — використати Default Media Receiver. Телефон (Sender) надсилає URL контенту, Receiver тягне потік напряму. Не потрібно писати веб-додаток. Керування відтворенням — через Google Cast SDK. Базова інтеграція займає 2–3 дні. Для кастомних вимог (інтерфейс, DRM, аналітика) розробляємо власний Receiver — додається ще 2–3 дні. Зниження витрат на розробку порівняно з самостійною реалізацією становить до 50%.

Підключення Google Cast SDK

Android. com.google.android.gms:play-services-cast-framework:latest у build.gradle — стандартний пакет для Chromecast Android. Ініціалізація в Application:

class App : Application() { override fun onCreate() { super.onCreate() val options = CastOptions.Builder() .setReceiverApplicationId(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID) .build() CastContext.getSharedInstance(this, executor).addOnSuccessListener { castContext -> // Cast контекст готов } } } 

DEFAULT_MEDIA_RECEIVER_APPLICATION_ID — стандартний Default Media Receiver, відтворює HLS, DASH, MP4, MP3. Для кастомного — реєструємо додаток у Google Cast Developer Console та використовуємо свій App ID. Докладніше про налаштування CastContext див. у документації Google Cast.

iOS. pod 'google-cast-sdk' або GoogleCast через SPM — основний SDK для Chromecast iOS. API аналогічно Android.

Кнопка Cast в UI

Google Cast SDK надає готові кнопки: UICastButton (iOS) та MediaRouteButton (Android). Вони показують список пристроїв і змінюють вигляд при підключенні:

// В меню toolbar override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_player, menu) CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.media_route_menu_item) return true } 

Для Jetpack Compose — AndroidView з MediaRouteButton.

Запуск відтворення на Receiver

val castSession = CastContext.getSharedInstance(context).sessionManager.currentCastSession val remoteClient = castSession?.remoteMediaClient ?: return val mediaMetadata = MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE).apply { putString(MediaMetadata.KEY_TITLE, "Назва фільму") putString(MediaMetadata.KEY_SUBTITLE, "Опис") addImage(WebImage(Uri.parse(thumbnailUrl))) } val mediaInfo = MediaInfo.Builder(streamUrl) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setContentType("application/x-mpegURL") // HLS, або video/mp4 для MP4 .setMetadata(mediaMetadata) .build() val loadOptions = MediaLoadRequestData.Builder() .setMediaInfo(mediaInfo) .setAutoplay(true) .setCurrentTime(startPositionMs.toLong()) .build() remoteClient.load(loadOptions) 

Керування відтворенням

RemoteMediaClient — центральний об'єкт для відтворення на Chromecast: play(), pause(), seek(position), setStreamVolume(volume). Стан відстежується через Callback:

remoteClient.registerCallback(object : RemoteMediaClient.Callback() { override fun onStatusUpdated() { val status = remoteClient.mediaStatus ?: return val position = status.streamPosition val isPlaying = status.playerState == MediaStatus.PLAYER_STATE_PLAYING updateUI(isPlaying, position) } }) 

Mini Controller та Expanded Controller — інтеграція chromecast стрімінгу

Вбудовані компоненти: MiniControllerFragment — смужка керування внизу, ExpandedControllerActivity — повноекранний плеєр. Підключаються декларативно — мінімум коду. Ці компоненти автоматично показують стан підключення до Chromecast пристрою.

Чому варто використовувати кастомний Receiver?

Default Receiver покриває 80% завдань. Але якщо потрібен унікальний інтерфейс, субтитри Subrip, аналітика або DRM (Widevine), без кастомного не обійтися. Ми створюємо веб-додаток на HTML5/JavaScript. Кастомний Receiver збільшує час розробки на 70%, але дає повний контроль. У 4 рази більше можливостей для кастомізації порівняно з Default.

Характеристика Default Receiver Кастомний Receiver
Час інтеграції 2–3 дні 5–6 днів
Кастомізація UI Обмежена Повний контроль
Підтримка DRM Ні Так (Widevine)
Аналітика Ні Збір будь-яких метрик
Складність Мінімальна Вимагає веб-розробки

Основні етапи інтеграції

Етап Тривалість Опис
Аналіз вимог 1 день Визначення формату контенту, DRM, кастомізації
Вибір Receiver 0.5 дня Default або кастомний, реєстрація в консолі Google Cast
Інтеграція SDK 1 день Додавання залежностей, ініціалізація CastContext
Реалізація кнопки Cast 0.5 дня Налаштування MediaRouteButton, обробка сесії
Керування відтворенням 1 день Play/pause/seek через RemoteMediaClient
Тестування 1 день На реальних пристроях (Chromecast, Android TV, Google Nest)
Деплой 0.5 дня Публікація в App Store та Google Play з урахуванням політик

Сесія Cast та перепідключення

При втраті Wi-Fi CastSession переходить у стан TEMPORARILY_DISCONNECTED, через 3 хвилини — DISCONNECTED. SessionManagerListener.onSessionSuspended / onSessionResumed обробляють перепідключення, відновлюємо відтворення зі збереженої позиції. При поверненні в додаток Cast SDK автоматично відновлює сесію через CastContext.sessionManager.currentCastSession.

Chromecast на React Native та Flutter

React Native: react-native-google-cast — неофіційний враппер. Стабільний для базових сценаріїв, розширений функціонал вимагає нативного коду. Flutter: офіційного пакету немає, flutter_google_cast нестабільний. Для production рекомендуємо нативну реалізацію через MethodChannel. Нативні рішення в 2 рази надійніші за кросплатформенні враппери. Трансляція на телевізор через Cast також доступна з веб-в'ю, але керування обмежене.

Додаткові можливості кастомного Receiver

Кастомний Receiver дозволяє додати власну обробку помилок, інтеграцію з analytics (Google Analytics, Firebase) та підтримку нестандартних форматів (наприклад, live-потоки із затримкою). Докладніше в офіційній документації.

Що входить у роботу

  • Інтеграція Google Cast SDK на Android (Kotlin) та iOS (Swift)
  • Кнопка Cast та кастомні UI: MiniController, Expanded Controller
  • Керування відтворенням (play/pause/seek/volume)
  • Обробка сесій, перепідключення, збереження позиції
  • Тестування на реальних пристроях (Chromecast, Android TV, Google Nest)
  • Документація та доступ до вихідного коду
  • Підтримка після деплою (1 місяць)

Терміни та вартість

Терміни варіюються від 2 до 6 днів. Вартість розраховується індивідуально після аудиту вашого проєкту. Зв'яжіться з нами, щоб отримати консультацію та попередню оцінку. Замовте Chromecast-стрімінг під ключ — ми гарантуємо стабільну роботу на всіх пристроях. Отримайте консультацію та переконайтеся, що ваша трансляція на телевізор працює бездоганно.