Позначимо: коли користувач натискає 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-стрімінг під ключ — ми гарантуємо стабільну роботу на всіх пристроях. Отримайте консультацію та переконайтеся, що ваша трансляція на телевізор працює бездоганно.







