CAF Receiver SDK

The CAF Receiver SDK is a major upgrade from the Receiver v2 SDK. Improvements
focus on significantly reducing the amount of code required to implement a
receiver app, while making Cast more reliable to maintain. This was done by
implementing all common use cases into CAF. The resulting improvements in
reliability and performance benefit both existing receiver apps that you upgrade
as well as new receiver apps.

The CAF Receiver SDK also comes with a built-in media player, which provides a
seamless and easy playback experience. It also allows you to customize the
player UI and provides your receiver with the ability to intercept and override
messages and methods to execute your custom business logic.

You can implement your receiver application in the following ways:

Use the Styled Media Receiver:
This is a pre-built receiver application that provides a media player UI
for audio and video content. It provides a default UI for the receiver
application, but you can customize several elements in the UI with a CSS
file.

Develop a Custom Receiver:
This is a custom built HTML5 app that you must host to handle the display
of your app content on the TV. You may need to create a Custom Receiver if
your app wants to display content other than audio/video media or if the
Styled Media Receiver does not support the media types your app requires.

Choose a receiver

Styled Media Receiver

The Styled Media Receiver is a pre-built receiver application hosted by Google
that is designed for streaming audio and video content. You can style the
interface with your own colors and branding assets using a CSS file.

To use the Styled Media Receiver, select Styled Media Receiver when registering
a new application and (optionally) provide the URL to
a CSS file that defines a custom look for the receiver application's UI.

For details about the CSS styles that allow you to customize the receiver
application's UI, see the Styled Media Receiver
guide.

Custom receiver

If your app provides content such as an image gallery, requires DRM, or custom
business logic, then you need to build a custom receiver application. A custom
receiver is an HTML5 app that you host on your own servers and that must be
implemented using the JavaScript Receiver API.

Default Media Receiver

A third option available is the Default Media Receiver. This is a pre-built
receiver application hosted by Google that is designed for streaming your audio
and video content. It does not require you to register with the Google Cast SDK
Developer Console, but you cannot customize any of the UI in the Default
Media Receiver.

Instead of registering with the developer console to receive an app ID, you can
use the Default Media Receiver with the default app ID:

From your sender app, you start the Default Media Receiver app on the Cast
device and then use it to load the URL to your media.

CAF Receiver features overview

Queueing

Queueing is a major feature introduced as part of CAF Receiver. The earlier
Receiver v2 implementation carries a basic sender-initiated queue while the new
queueing implementation in CAF Receiver introduces receiver-implemented
queueing.

Queueing provides the following features:

Support of Google's cloud queue implementation so an externally stored and
created queue can be directly loaded into Cast devices.

Mechanisms that allows pagination of items in the queue rather than loading
everything at once, solving our v2 message size limit issue.

Support for new messaging such as going to the next item, the previous item,
fetching a window of items, as well as getting media information related to a
set of queue items.

Better integration with the Cast eco-system such as Google Home through new
queueing data.

An easy to use QueueManager API that allows insertion, removal, and update
of queue items.

Event handling

The CAF Receiver SDK allows your receiver app to handle player events. The event
handler takes a
cast.framework.events.EventType
parameter (or an array of these parameters) that specifies the event that should
trigger the listener.

Message interception

CAF Receiver SDK allows your receiver app to intercept messages and execute
custom code at that point of interception. Message interception can be
especially useful if you want do things like customizing the load request data.

Ad breaks

The CAF Receiver SDK supports embedding ads within a given media stream; it
provides two ways to incorporate ad breaks to the receiver: client-side and
server-side stitching using breaks and break clips.

Audio tracks

Audio track selection in the new CAF Receiver SDK has an
AudioTracksManager
class that simplifies and streamlines track selection, giving you more control
and better access to properties, such as name, URL and language.

Closed captions (subtitles)

Closed caption track selection in the new CAF Receiver SDK has a
TextTracksManager
class that simplifies and streamlines track selection, giving you more control
and better access to properties, such as name, URL and language (much like Audio
track selection).

Custom messages

Message exchange is the key interaction method for receiver applications. A
sender can send a message to the receiver and vice versa. A receiver application
may choose to listen for messages on a specified namespace. It is then up to any
connected senders wishing to communicate on that namespace to use the
appropriate protocol.

Styling the player

The CAF Receiver SDK provides a built-in player UI. In order to use the built-in
player UI you need to add cast-media-player element to your HTML. CSS-like
styling allows setting various things including background-image, splash-image,
font family and other things. This functionality allows for better branding and
overall customization.

Custom UI data binding

Custom UI data binding allows you to use your own custom UI element and use the
PlayerDataBinder
class to bind the UI to the player state. The binder also supports sending
events for data changes, if the app does not support data binding.

Content preload

CAF Receiver supports preloading of media items after the current playback item
in the queue. The preload operation pre-downloads several segments of the
upcoming items. Preloading will work for HLS and Smooth streaming content by
default. For regular MP4 video and audio files such as MP3, those will not be
preloaded, as Cast devices support one media element only and cannot be used to
preload while an existing content item is still playing.

Touch controls

With the introduction of smart displays, the CAF Receiver SDK now adds support
to enable touch controls on your receiver app when launched on these devices.
The CAF Receiver SDK provides a default UI experience with additional
customization of the player controls.

Voice commands

By default, the CAF Receiver handles most incoming voice commands from
Assistant-enabled devices. Common media commands enable and display the same UI
that is used for normal operation (touch and non-touch).