Google Cast SDK Release Notes

For each new version of Google Cast that is released, the changes are described below and the API references are updated. For changes to the Design Checklist, see its changelog.

October 28, 2024

Android Sender 22.0.0 and Android TV Receiver 21.1.1

  • Deleted MediaNotificationService. It shouldn't be used by applications directly.
  • Fixes a bug for devices running Android R or older where trying to display an image that is too small in a Google Cast notification can lead to a System UI crash.

September 4, 2024

Web Receiver 3.0.0135

  • The default Shaka Player version used by CAF is updated from 4.3.4 to 4.9.2. See the Shaka Player changelog for a complete list of changes.
  • Enabled content preload for Shaka player. This allows seamless switching between media items or ad breaks.
  • Fixed errors caused by Shaka switching codecs.
  • Added a new field ErrorSeverity for Shaka errors. If severity is RECOVERABLE, playback should not stop.
  • Fixed a content load failure for concurrent load requests.
  • Internally, CAF now uses shaka.Player#attach to attach a media element instead of passing the media element to the shaka.Player constructor (deprecated in the Shaka API).
  • Added frameType and frameDescription fields to cast.framework.events.Id3Event. These fields are populated when Shaka Player is used for playback.
  • Added REQUEST_GET_STATUS and REQUEST_PRELOAD events. Those events can be listened with PlayerManager#addEventListener.
  • Added an error response for load requests with an incorrect requestId instead of silently failing.
  • Fixed warning log for Shaka Player jumpLargeGaps config, which was deprecated in Shaka v4.
  • Started populating requestId in the MediaStatus message for a LOADING state.
  • Recycle Shaka player instance when loading new content.
  • Dropped support for deprecated QUEUE_SHUFFLE media command. Use QUEUE_UPDATE instead.
  • Fixed support for VAST ad pods where each <Ad> tag has a sequence attribute and a nested <Wrapper> tag.
  • Fixed propagation of the crossorigin attribute without a value from <cast-media-player> to the nested <video> element.
  • Expose inband audio language in MPL.

August 22, 2024

iOS Sender 4.8.3

  • Fixed a bug where Cast Button wouldn't open the device picker on receiving a tap.
  • Fixed a crash that affects devices running iOS 17 and later related to AVRouting.

April 18, 2024

iOS Sender 4.8.1

  • The minimum version supported by Cast SDK is now iOS 14.
  • Privacy manifest included in the package along with the signed xcframework.
  • Guest mode has been deprecated and removed. A single flavour of SDK will be available for integration from this release.
  • Fixed a crash if a short ad is played sometimes while casting.

December 11, 2023

Web Receiver 3.0.0122

  • Added support for Ad Pods and Ad Buffet for VAST.
  • Updated Cast Player media controls UI for Google TV devices.
  • Added a new audioTrackInfo field to the Track object.
  • Added cast.framework.system.Message, that represents a message received from or sent to a sender.
  • Changed the seek break logic. Now the Web Receiver creates a synthetic seek-{timestamp} break only when there are more than 1 breaks returned from BreakManager#setBreakSeekInterceptor, otherwise the seek break remains equal to the original break on a timeline.
  • Added CastReceiverOptions#shakaVariant option to load debug versions of Shaka Player in CAF.
  • Fixed PlaybackConfig#licenseRequestHandler and PlaybackConfig#licenseResponseHandler not being recognized with Shaka for HLS when AES-128 encryption is used.
  • Fixed ID3Event not being fired when Shaka Player is used.
  • Fixed side-loaded text tracks when preroll ads are used.
  • Fixed text rendering when UITextDisplayer is used.
  • Fixed various case-sensitivity issues for VAST, MIME types, and content protection system names.
  • Fixed various issues with forced captions.
  • Fixed populating EndedReason codes for BREAK_CLIP_ENDED events.

December 4, 2023

Android Sender 21.4.0 and Android TV Receiver 21.0.1

July 20, 2023

iOS Sender 4.8.0

  • The minimum version supported by the iOS SDK is now iOS 13.
  • First stable XCFramework release.
  • XCFrameworks available through Cocoapods.
  • Restored the functionality to control volume with physical volume buttons during media playback.
  • Cast button now respects tint color when used in a navigation bar.
  • Navigation title color can now be customized using the GCKUIStyle API.
  • Fixed transparent navigation bar issue in Media Track Captions List View.
  • Fixed a crash in the XCFramework beta.
  • Added an API to bind a UIControl with forward or rewind actions.
  • Added casting support to Pixel tablets.

July 6, 2023

Web Receiver 3.0.0111

  • Added support for dynamic ad insertion using BreakManager addBreak(breakData, breakClips, broadCastMediaStatus) and removeBreakById(breakId) .
  • Added Subtype string parsing to Smooth manifests.
  • Added support for async requests in the manifestRequestHandler , segmentRequestHandler , and licenseRequestHandler for Shaka Player.
  • Added support for forced subtitles.
  • Bumped the default Shaka version for CAF to v4.3.4.
  • Clarified setActiveByIds parameter description.
  • Corrected how CAF chooses distinct audio tracks.
  • Corrected request body type conversions for Shaka request filters.
  • Added capability to query CreativeInformation related to a BreakClip in BreakManager getCreativeInfoByClipId(breakClipId) .
  • Fixed media metadata missing during the loading of the media element on DPad-controlled devices.
  • Added properties hlsSegmentFormat and hlsVideoSegmentFormat to BreakClip .
  • Fixed case-sensitive MIME type comparisons using MPL.
  • Fixed live HLS (TS-based) infinite buffering on load using Shaka Player.
  • Fixed the PlayerDataBinder behavior for the IS_AT_LIVE_EDGE_CHANGED event.
  • Fixed infinite loop on insufficient data provided in TS segments using MPL.
  • Added error.stack for Shaka Player errors.
  • Changed to use the audioMimeType field instead of audioCodec from Shaka Player's track object to populate the cast.framework.messages.Track.trackContentType field for variant tracks.
  • Added shaka.extern.track.label to cast.framework.messages.Track.name for Shaka Player tracks.
  • Expanded the cast.framework.stats.Stats object to account for existing fields in shaka.extern.Stats.
  • Fixed media time calculations for content with expanded embedded breaks.

March 28, 2023

Android Sender 21.3.0 and Android TV Receiver 21.0.0

October 17, 2022

Web Receiver 3.0.0105

October 10, 2022

Android Sender 21.2.0

August 8, 2022

Android Sender 21.1.0 and Android TV Receiver 20.0.0

March 31, 2022

Web Receiver 3.0.0103, MPL Player 1.0.0.113

  • Upgraded the default Shaka player version to 3.2.2.
  • Added a new API, cast.framework.PlaybackConfig#shakaConfig, to allow overriding Shaka player version and other Shaka options.
  • Added a new API, cast.framework.ui.Controls#hasMediaControlsOverlay(), to query whether the media control overlay is rendered on top of their application.
  • Added a new style, cast.framework.ui.ControlsButton.LIKE_HEART, for the Like user action.
  • The currentMediaTime value of the cast.framework.events.EventType.BREAK_CLIP_ENDED event data now represents the current time of the latest break clip at the moment the event occurred.
  • Added a method cast.framework.PlayerManager#getRawCurrentTimeSec that returns the media time of the media element.
  • Added cast.framework.NetworkRequestInfo#timeoutInterval to specify the HTTP request timeout for player requests.
  • Fixed MPL bugs in decoding CEA 608/708 captions for demuxed A/V streams.
  • Fixed the MPL WebVTT timestamp parsing logic to accept more than 2 digits for the hours value.

December 9, 2021

Android Sender 21.0.0

  • Added better nullability support for Kotlin, by making null safety violations an error. Java developers will see no impact. Kotlin developers might see new build failures if they have existing code that was not null-safe.

November 19, 2021

iOS Sender 4.7.0

November 16, 2021

Android Sender 20.1.0

  • Note: Apps targeting Android 12 must update to Android Sender 20.1.0 to prevent a runtime crash.
  • Queue improvements
    • Added a new itemsReorderedAtIndexes callback to MediaQueue that gets called when the queue has been reordered.
    • Added support for the serialization of queue commands.
  • Made the customData param in RemoteMediaClient#queueSetRepeatMode nullable.
  • The Remote Display feature has been deprecated.
  • The minSdkVersion has been bumped from 14 to 16.

October 26, 2021

Web Receiver 3.0.0102

  • Upgrade to Shaka player v3.0.13 (which in turn fixes a number of previously reported issues).
  • Added support for secondary images on smart displays and Chromecasts.
  • Fixed an issue where captions were not displaying for buffered streams due to an error in logic used to detect duplicate tracks.
  • Fixed an issue where the receiver’s error callback wasn’t fired when LOAD_BY_ENTITY returned an error.
  • Added support for high-efficiency AAC (HE-AAC) audio codecs for transport streams.
  • Fixed a bug where PlayerManager.getStats() was not returning the correct values for height and width.
  • Removed VAST and VMAP information from MediaStatus messages to avoid overflows that can cause a sender to get disconnected from the receiver.
  • Fixed a problem where the endedReason wasn’t provided to the sender when ads are skipped.
  • Fixed a problem where ad breaks were getting removed from the load queue before playing.
  • Added a new cast.framework.message.QueueChange#reorderItemIds field which contains the list of queue items affected by the QUEUE_CHANGE operation.
  • Reduced buffering in HLS live streams in MPL when switching between audio tracks, so audio and video now stay in sync.
  • Fixed parsing of HLS streams in MPL with embedded CEA608/CEA708 captions.
  • Media controls for Chromecast with Google TV will be hidden when media is paused for more than 5 seconds.

May 26, 2021

iOS Sender 4.6.1

  • Fixed a problem where backgrounded Cast sessions are suspended for applications that allow background execution.

May 17, 2021

iOS Sender 4.6.0

April 29, 2021

Web Receiver 3.0.0096

April 20, 2021

Android Sender 20.0.0 and Android TV Receiver 18.0.0

April 5, 2021

Web Receiver 3.0.0095

  • Upgraded Shaka Player to 3.0.10.
  • The Cast Button is now shown by default when the STREAM_TRANSFER media command is supported.
  • Added Suggestions Bar to the bottom of the Media Browse UI. The Suggestion Bar contains interactive chips that when selected can play a media item or scroll through the available media items. Each chip also maps to an available Google Assistant command. Suggestion Chips are currently only supported when the system language is set to English or Japanese.
  • Fixed a bug in Chromecast with Google TV where the media controls overlay was displayed when casting photo content to the default receiver.
  • Added support for TRACKS_CHANGED event.

December 18, 2020

Web Receiver 3.0.0085

December 3, 2020

iOS Sender 4.5.3

  • Fixed load-time error "Undefined symbols for architecture arm64" for GCKCredentialsData.
  • Fixed compiler error for conflicting nullability on GCKCredentialsData.
  • Warning messages are now logged if the required Bonjour service entries are missing from Info.plist.

November 4, 2020

iOS Sender 4.5.2

  • Updated the minimum version of Protobuf library to 3.13 in CocoaPods. Usage of previous Protobuf versions will cause the SDK to crash.
  • This release is exclusive to CocoaPods and uses the same binary as v4.5.1.

October 13, 2020

iOS Sender 4.5.1

  • Fixed an issue where GCKUICastButton with a custom device picker was not updating to reflect the correct Cast state.
  • Fixed the warning of "Conflicting nullability specifier on return types."

September 14, 2020

Web Receiver

  • Upgraded Shaka Player to 2.5.16.

iOS Sender 4.5.0

  • Added support for Cast device discovery changes in iOS 14, which requires explicit user permission when casting for the first time. See First-time casting in iOS 14 for more information.
  • Updated minimum SDK support to iOS 10.

September 8, 2020

Web Sender

August 31, 2020

Web Receiver

  • Added support for #EXT-X-DATERANGE in HLS / EventStream in DASH.

August 3, 2020

iOS sender 4.4.8

July 29, 2020

Android Sender 19.0.0 and Android TV Receiver 17.0.0

July 13, 2020

Web Receiver

  • Improved media category detection for the default UI (video vs audio).
  • Added support for live absolute time from Shaka Player.
  • Fixed an issue with audio glitches on Nest Hub Max devices.
  • Upgraded Shaka Player to 2.5.12.

May 4, 2020

Web Receiver

  • Timeout values for Google Assistant commands are now configurable.
  • Detailed MPL error codes are now exposed in error events.
  • Supported media commands can now be enforced by using the enforceSupportedCommands flag.
  • Fixed the supported commands reported during a break in playback.
  • Fixed an issue with an Assistant shuffle load request.
  • Fixed a bug in getStats values.

March 12, 2020

Web Receiver

  • Added new device capability IS_CBCS_SUPPORTED to deviceCapabilities.
  • Upgraded Shaka Player to 2.5.8.

February 27, 2020

iOS Sender v4.4.7

  • Fixed the physical volume buttons for apps that don't use any UI components from the SDK.
  • Fixed an issue with the currentTime label in the expanded controller when pressing the forward or backward buttons repeatedly.
  • Media items in GCKMediaQueue are persisted after the app moves to the background.
  • UI customization updates:
    • The progress bar of the mini controller is now customizable.
    • The background color of the navigation bar and toolbar of the Cast dialog is now customizable.
    • Fixed UI issues specific to iPhone X.
  • Fixed a few issues causing stalls and crashes.

February 24, 2020

Android Sender 18.1.0

January 22, 2020

Web Receiver

  • Fixed an issue where multiple media statuses are broadcast when changing supported commands.

Receiver v2

  • Improve bitrate selection for VAST Ads.

MPL

January 7, 2020

Web Receiver

  • Added support for ID3 timed metadata in cast.framework.events.EmsgEvent. Additionally, EmsgEvent is now dispatched for HLS/CMAF content.
  • Fixed an issue where player data was missing during PLAYER_LOAD_COMPLETE when transitioning to a new media session.
  • Fixed an issue where the media icon was overlapping the break clip number and countdown.
  • Fixed issue where the countdown of the first break clip would always display 0:00.
  • Upgraded Shaka Player to 2.5.6.

Web Receiver v2

  • Added new device capability IS_DEVICE_REGISTERED to deviceCapabilities. If set, the Cast device is registered in the Cast Developer Console for debugging.
  • Fixed a stalling load issue.
  • Individual media error messages are now sent for every failed item in the queue.

MPL

  • Fixed an issue with live streams where audio would continue to play for some time after a stop message was received.
  • Fixed an issue where video compression artifacts would show during quality level changes.
  • Fixed an issue where HLS streams using *.m4s segments were failing.

December 5, 2019

Android Sender 18.0.0

  • Added setMediaSessionEnabled for developers to enable and disable a media session created by Cast SDK.
  • Changed how media notifications show during a Cast session. If media notification is enabled, it will always show during a cast session. Previously, it would only show when the app was in the background.
  • Changed some media-related classes to implement a Parcelable interface.

November 11, 2019

iOS Sender v4.4.6

  • Fixed an issue related to the minimum supported version of iOS 9.

October 7, 2019

Web Receiver

  • Exposed tracks roles as part of tracks metadata.
  • Upgraded Shaka Player version to 2.5.5.

September 23, 2019

iOS Sender v4.4.5

  • Improved support for Cast device discovery and session management.
  • Added new media commands to GCKMediaStatus.
  • Added whenSkippable property to GCKAdBreakStatus.
  • UI fixes for Ads and iOS 13.

September 11, 2019

Android Sender 17.1.0

September 9, 2019

Web Receiver

  • TV_SHOW metadata type now has a "Playing Next" preview in the default player if the next item is preloaded.
  • Added the ContentRating class to the cast.framework.messages namespace.
  • Updated the default UI audio title so that metadata.artist takes precedence over metadata.albumArtist.
  • Added support for negative startTime values to indicate start time relative to content end or live edge.
  • Media Browse:
    • Media Browse drawer is now automatically hidden after 30 seconds of user inactivity.
    • Added Play/Pause button and media item thumbnail to the top right corner of the Media Browse overlay.
    • Updated Media Browse list behavior. Now horizonal scroll is reset to the initial left-most position every time Media Browse content is set.
  • Bug Fixes:
    • Delayed resolving BasePlayer end promise to allow media element event to be fired.
    • Handled load error for Ad preloading.
    • Watermark is now displayed with the rest of the metadata.
    • Default audio UI on Chromecast respects .progressBar styles.
    • Eliminated splashing of an IDLE screen before LOADING and between playing of subsequent media items.
    • Fixed seek stall for Dash content.

Web Receiver v2

  • Added the ContentRating class to the cast.receiver.media namespace.
  • Fixed a bug where error data propagated incorrectly when there were multiple items in queue.

Media Player Library

  • Added HLS #EXT-X-MEDIA attributes to the API.
  • Bug Fixes:
    • Fixed an issue with failed SourceBuffer remove() operations causing audio track switching to crash playback.
    • Fixed a parsing issue when a packed audio format type was specified (for example, *.ec3) but MPEG-4 based segments are used (for example, *.mp4, *.mp4a, and so on).
    • Fixed an HLS issue where inband CEA608 captions were displayed with noticeable latency.
    • Fixed HLS and Smooth content with no audio failing to load.

August 27, 2019

Web Sender

  • Web Sender now uses the new Custom Elements v1 syntax. This version replaces v0, which has been deprecated.
  • Fixed changed events for breakTime, breakClipTime, and liveSeekableRange, using new the getEstimatedBreakTime, getEstimatedBreakClipTime, and getLiveSeekableRange functions added to Chrome M77.

August 12, 2019

iOS Sender v4.4.4

  • Improved experience on iOS 13.
  • Improved support for Cast device discovery.

July 30, 2019

Web Receiver

  • Upgraded Shaka Player version to 2.5.1.
  • Fixed issue where metadata overlay disappeared too quickly during content loading.
  • Fixed handling of rejection in load interceptor to clear load state.
  • Updated setBrowseContent to be nullable.
  • Fixed issue where reported current time was incorrect when seeking over Ad breaks.
  • Added support for ignoreTtmlPositionInfo to ignore TTML captions positioning.
  • Improved support for handling of load errors:
    • Avoided firing multiple MediaFinishedEvents.
    • Triggered media manager error callback to clear player on load error.

July 22, 2019

iOS Sender v4.4.3

  • Improved support for handling of load errors by providing an error_reason.
  • Released a version of the SDK without Guest Mode.

June 17, 2019

Android Sender 17.0.0

  • The latest SDK switches from Android Support Libraries to Jetpack (AndroidX) Libraries. Libraries will not work unless you make the following changes in your app:
    • Upgrade com.android.tools.build:gradle to v3.2.1 or later.
    • Upgrade compileSdkVersion to 28 or later.
    • Update your app to use Jetpack (AndroidX). Follow the instructions in Migrating to AndroidX.
  • For more information see the Google APIs for Android Release Notes.

June 10, 2019

Web Receiver

  • Introduced support for Media Browse, a new feature for discovering content on smart displays.
  • Added localization in the default UI for 9 new locales:
    • Danish
    • English (UK)
    • English (India)
    • English (Singapore)
    • French (Canada)
    • Italian
    • Norwegian
    • Dutch
    • Swedish
  • Removed rounded corners from album art for the remote UI.
  • Bug fixes for Live and other areas.

iOS Sender v4.4.2

  • Guest Mode
    • Added support for the "Enable Guest Mode" option from the Cast Developer Console.
    • Fixed a Guest Mode session management issue.
  • Bug Fixes
    • Fixed a localization issue introduced in v4.4.1.

April 24, 2019

iOS Sender v4.4.1

  • Introduced alpha support for live streams. For details, see the developer guide.
    • Added new data structures and attributes for live stream status.
    • Added new GCKMediaMetadata keys.
    • Added Live stream media commands:
      • [GCKRemoteMediaClient loadMediaWithLoadRequestData:]
      • [GCKRemoteMediaClient seekWithOptions:]
    • Improved expanded controller UI to support live streams:
      • Changed the layout and appearance of the expanded controller.
  • Bug Fixes
    • Fixed GCKUICastContainerViewController's bottom on iPhone X.
    • Fixed reconnection issue when the OS is performing extensive network activities.
    • Fixed crash in accessibility label initialization with GCKUICastButton.

April 23, 2019

Web Receiver

  • Introduced alpha support for live streams. For details, see the developer guide.
    • Updated UI to support live streams including live indicator.
  • Added mediaCategory field to media status to indicate if a media is a video, audio, or a photo.
  • Bug Fixes
    • Fixed usage of the playbackConfig.segmentHandler return value.

Media Player Library

  • Added HEVC codec support to HLS in MPL.

Web Sender

  • Introduced alpha support for live streams. For details, see the developer guide.
  • Introduced support for ads. For details, see the developer guide.
    • Added RemotePlayerController.skipAd() for skippable ads.

Android Sender 16.2.0

  • Introduced alpha support for live streams. For details, see the developer guide.
    • Added new data structures and attributes for live stream status.
    • Added new MediaMetadata keys.
    • Added Live stream media commands:
      • RemoteMediaClient#load(MediaLoadRequestData)
      • RemoteMediaClient#seek(MediaSeekOptions)
    • Improved expanded controller UI to support live streams:
      • Added live stream support to the expanded controller UI widgets.
      • Changed the layout and appearance of the expanded controller.
      • Introduced the live stream compatible CastSeekBar widget to replace the native SeekBar.
      • Modified the ExpandedControllerActivity to use the CastSeekBar instead of SeekBar for live stream compatibility. The ExpandedControllerActivity#getSeekBar() is now deprecated and will return a dummy instance.
  • Added a new MediaStatus#PLAYER_STATE_LOADING player state:
    • When the Web Receiver begins loading the media, the playerState property in MediaStatus is set to MediaStatus#PLAYER_STATE_LOADING until it begins buffering or playing content.
    • In most cases, the app handles this state the same way it was handling MediaStatus#PLAYER_STATE_BUFFERING.
    • Buffering and loading states are not always interchangeable.
    • While loading, the Web Receiver has not yet resolved all the media information, and so the only media information available is what was present in the sender's load media request.
    • While buffering, the media information may contain additional information resolved by the receiver.
  • Modified MediaMetadata to support audio books:
    • Added new MediaMetadata keys.
    • Added new metadata type for audiobooks.

March 25, 2019

Web Receiver

  • Replaced usage of document.registerElement() with customElements.define() to make the Web Receiver SDK compatible with newer versions of the Cast platform.
  • MediaStatus.breakStatus now returns an empty object when ad breaks are present for content but an ad break is not currently playing.
  • Fixed an issue with inline VAST tags parsing.

Media Player Library

  • Fixed the issue of ~20s delay when switching audio tracks.

February 13, 2019

Web Receiver

  • Fixed the sudden appearance of the Skip Ad button for Touch UI.
  • Fixed displaying breaks information on remote control.

Media Player Library

  • Fixed an issue with handling licenseUrl for preloaded media.

February 5, 2019

iOS Sender v4.3.5

  • Added support for Audiobook metadata, see GCKMediaMetadata.h for more details.
  • Set correct value for static_framework on the podspec.
  • Split styleAttributes for the navigation bar and the toolbar in the connection controller.
  • Bug Fixes
    • Fixed a crash on certain failed database initializations.
    • Fixed an issue with the Web Receiver volume bar during incoming phone calls or alarm rings.
    • Fixed the redundant calling of certain delegate methods during discovery.
    • Fixed an issue where the media queue list wouldn’t clear after the last item in the queue finished playing.
    • Disallowed showing non-reachable nearby devices when the network is not available.
    • Disabled the volume slider on the device view controller for devices in which the volume cannot be controlled.