שילוב הזרמת Chromecast באפליקציה הניידת שלך

משתמשים מצפים יותר ויותר להעביר תוכן מיידית מאפליקציות מובייל למסך גדול. אנו מפתחים אינטגרציית הזרמת Chromecast, ומטפלים בכל המחזור—החל מהגדרת Google Cast SDK ועד בניית Receiver מותאם אישית. הצוות שלנו מספק את הפרויקט במפתח מלא עם תמיכה מתמשכת, ומבטיח פעולה אמינה ועמידה בדרישות חנות האפליקציות.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב הזרמת Chromecast באפליקציה הניידת שלך
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

כאשר משתמש מקיש על כפתור ה-Cast, התוכן אמור להופיע מיד על המסך הגדול. אך יישום כפתור זה רחוק מלהיות טריוויאלי: שילוב Google Cast SDK, ניהול מצב הסשן, טיפול באובדן חיבור, ושליטה בהשהיה ובחיפוש. המכשירים חייבים להיות על אותה רשת, והאפליקציה חייבת לעמוד בהנחיות App Store Review Guidelines (סעיף 4.2). אנחנו מטפלים בזה עבורכם. לצוות שלנו יש ניסיון של 5+ שנים בפיתוח מובייל ו-15+ פרויקטים עם סטרימינג של Chromecast. אנו משתמשים בתבניות מוכחות ומבטיחים ביצועים יציבים על Android ו-iOS. הרכיבים המוכנים שלנו מקצרים את זמן היציאה לשוק ב-30%, ושימוש ב-Default Media Receiver יכול לקצץ בעלויות התקציב הראשוניות בעד 40%.

כיצד ליישם סטרימינג של Chromecast תוך 2–3 ימים?

הדרך המהירה ביותר היא שימוש ב-Default Media Receiver: הטלפון (Sender) שולח כתובת URL של תוכן, וה-Receiver מזרים אותו ישירות—ללא צורך באפליקציית web מותאמת אישית. בקרת ההפעלה עוברת דרך Google Cast SDK. אינטגרציה בסיסית אורכת 2–3 ימים. לדרישות מותאמות אישית (UI, 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 контекст готов
        }
    }
}

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 הסטנדרטי, שמנגן HLS, DASH, MP4, MP3. עבור Receiver מותאם אישית, רשמו את האפליקציה שלכם ב-Google Cast Developer Console והשתמשו ב-App ID משלכם. למידע נוסף על הגדרת CastContext, ראו את תיעוד Google Cast.

iOS. הוסיפו את DEFAULT_MEDIA_RECEIVER_APPLICATION_ID או pod 'google-cast-sdk' דרך SPM—ה-SDK הראשי ל-Chromecast על iOS. ה-API דומה ל-Android.

כפתור Cast בממשק המשתמש

Google Cast SDK מספק כפתורים מוכנים: GoogleCast (iOS) ו-UICastButton (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, השתמשו ב-MediaRouteButton עם // В меню 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 } .

התחלת הפעלה על ה-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)

בקרת הפעלה

AndroidView הוא האובייקט המרכזי להפעלת Chromecast: MediaRouteButton, 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, play(). עקבו אחר המצב באמצעות 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

רכיבים מובנים: pause()—סרגל שליטה תחתון, ו-seek(position)—נגן במסך מלא. הם עובדים בצורה דקלרטיבית עם קוד מינימלי ומשקפים אוטומטית את מצב חיבור ה-Chromecast.

למה להשתמש ב-Receiver מותאם אישית?

ה-Default Receiver מכסה 80% ממקרי השימוש. אך אם אתם צריכים ממשק ייחודי, כתוביות Subrip, אנליטיקה או DRM (Widevine), Receiver מותאם אישית הוא חיוני. אנו בונים אפליקציית web ב-HTML5/JavaScript. Receiver מותאם אישית מגדיל את זמן הפיתוח ב-70% אך נותן שליטה מלאה—פי 4 יותר אפשרויות התאמה אישית מה-Default.

תכונה Default Receiver Receiver מותאם אישית
זמן אינטגרציה 2–3 ימים 5–6 ימים
התאמת UI מוגבלת שליטה מלאה
תמיכת DRM לא כן (Widevine)
אנליטיקה לא איסוף כל מדד
מורכבות מינימלית דורש פיתוח web

שלבי אינטגרציה מרכזיים

שלב משך תיאור
ניתוח דרישות יום אחד הגדרת פורמט תוכן, DRM, התאמה אישית
בחירת Receiver חצי יום Default או מותאם אישית; רישום ב-Google Cast console
אינטגרציית SDK יום אחד הוספת תלויות, אתחול CastContext
יישום כפתור Cast חצי יום הגדרת MediaRouteButton, טיפול בסשנים
בקרת הפעלה יום אחד הפעלה/השהיה/חיפוש דרך RemoteMediaClient
בדיקות יום אחד על מכשירים אמיתיים (Chromecast, Android TV, Google Nest)
פריסה חצי יום פרסום ל-App Store ול-Google Play בהתאם למדיניות

סשן Cast וחיבור מחדש

כאשר ה-Wi-Fi אובד, setStreamVolume(volume) נכנס למצב 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) } }) , ולאחר מכן MiniControllerFragment אחרי 3 דקות. ExpandedControllerActivity / CastSession מטפלים בחיבור מחדש; אנו מחדשים את ההפעלה מהמיקום השמור. בחזרה לאפליקציה, Cast SDK משחזר אוטומטית את הסשן דרך TEMPORARILY_DISCONNECTED.

Chromecast על React Native ו-Flutter

React Native: DISCONNECTED—wrapper לא רשמי. הוא יציב לתרחישים בסיסיים; תכונות מתקדמות דורשות קוד native. Flutter: אין חבילה רשמית; SessionManagerListener.onSessionSuspended אינו יציב. לייצור, אנו ממליצים על יישום native דרך onSessionResumed. פתרונות native אמינים פי 2 מ-wrapper חוצי פלטפורמות. שידור טלוויזיה מ-WebView אפשרי גם כן, אך השליטה מוגבלת.

יכולות נוספות של Receiver מותאם אישית

Receiver מותאם אישית מאפשר להוסיף טיפול בשגיאות מותאם אישית, אינטגרציית אנליטיקה (Google Analytics, Firebase), ותמיכה בפורמטים לא סטנדרטיים (למשל, שידורים חיים עם עיכוב). ראו את התיעוד הרשמי לפרטים.

מה כלול

  • אינטגרציית Google Cast SDK על Android (Kotlin) ו-iOS (Swift)
  • כפתור Cast ו-UI מותאם אישית (MiniController, ExpandedController)
  • בקרת הפעלה (הפעלה/השהיה/חיפוש/עוצמת קול)
  • ניהול סשנים, חיבור מחדש, שמירת מיקום
  • בדיקות על מכשירים אמיתיים (Chromecast, Android TV, Google Nest)
  • תיעוד וגישה לקוד המקור
  • תמיכה לאחר פריסה (חודש אחד)

לוחות זמנים ועלות

לוחות הזמנים נעים בין 2 ל-6 ימים. העלות נקבעת באופן אישי לאחר בדיקת הפרויקט שלכם. צרו קשר לייעוץ והערכה מקדימה. הזמינו את פתרון הסטרימינג שלכם ל-Chromecast—אנו מבטיחים ביצועים יציבים על כל המכשירים. קבלו ייעוץ והבטיחו שהשידור לטלוויזיה שלכם יעבוד ללא תקלות.