Ce guide explique comment migrer une application Cast Receiver v2 vers la dernière version du Web Application réceptrice.
Le nouveau SDK CAF (Cast Application Framework), également appelé Web Receiver v3, une mise à niveau majeure du SDK Receiver v2. Le SDK Web Receiver fournit une un SDK simplifié et facile à utiliser pour développer des applications Web Receiver multimédias.
Web Receiver fournit une API plus cohérente avec le nouvel expéditeur CAF API. Il offre une intégration complète d'un lecteur (MPL et Shaka) et implémentation et compatibilité des contenus multimédias Cast et de l'Assistant Google commandes vocales. Le SDK CAF fournit également une UI par défaut à laquelle vous pouvez facilement styliser à l'aide de CSS et un service de liaison de données pour simplifier l'implémentation de l'interface utilisateur.
Pourquoi migrer ?
En migrant une application Récepteur v2 vers Web Receiver, une grande partie du code avec le lecteur peuvent être éliminés, ce qui vous permet de vous concentrer sur l'écriture une logique métier spécifique à l'application.
CAF intègre parfaitement les lecteurs MPL et Shaka pour prendre en charge un plus large éventail de types de contenus, y compris les flux HTTP en direct (TS et CMAF), MPEG-DASH, Lisses Diffusions et types pris en charge par la propriété source Élément multimédia (MP3, MP4, Icecast, etc.). Pour obtenir la liste complète, consultez la page Contenus multimédias compatibles avec Google Cast. Actuellement, CAF n'est pas compatible avec les lecteurs fournis par l'utilisateur.
Migrer vers CAF ajoutera la prise en charge des commandes vocales avec l'Assistant Google. Toute nouvelle commande vocale de l'Assistant Google sera automatiquement prise en charge lorsque à l'aide de CAF.
En plus de la prise en charge de nouvelles commandes multimédias, telles que "changer les pistes par langue" ou "Modifier la vitesse de lecture". CAF intègre aussi des annonces mieux placées en file d'attente et une meilleure assistance en direct.
Nouveautés
L'API Web Receiver essaie de suivre les conventions introduites par Expéditeurs CAF pour Android et iOS et est assez différent de celui de la v2.
Web Receiver utilise un nouvel espace de noms
cast.framework
au lieu de l'espace de noms cast.receiver
pour toutes les API exposées. Un grand nombre de
les objets de données utilisés par la version 2 sont les mêmes dans CAF et sont exposés
la
cast.framework.messages
(pour la plupart, ils se trouvaient sous cast.receiver.media
).
Les services v2 suivants sont remplacés par les services CAF correspondants:
- La classe
CastReceiverManager
est remplacée parCastReceiverContext
qui est un Singleton qui gère la session Cast, les expéditeurs, l'envoi les messages et les événements système globaux. LaCastReceiverOptions
peut servir à fournir des options d'application globales (comme les options de file d'attente, de récepteur la version, la configuration de lecture, etc.) au contexte. - La classe
MediaManager
est remplacée parPlayerManager
qui est une propriétéCastReceiverContext
singleton, et gère la session multimédia, les demandes multimédias, Demandes vocales à l'Assistant (CommandAndControlManager
dans la v2), et déclenche des événements médiatiques. Configuration pour les joueurs (cast.player.api.Host
en MPL) est fournie parPlaybackConfig
, qui peuvent être fournis globalement ou par requête de chargement.
PlayerManager
expose également les nouvelles classes d'administrateurs secondaires:
TextTracksManager
: permet de gérer les pistes textuelles multimédias.AudioTracksManager
: permet de gérer les pistes audio.QueueManager
: permet de gérer la file d'attente.BreakManager
: gérer les annonces
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
Logique métier du destinataire
Gestionnaires d'événements exposés du récepteur v2 (tels que CastReceiverManager.onReady
ou
MediaManager.onLoad
) pour ajouter une logique métier. Dans CAF, les gestionnaires d'événements sont
remplacé par des écouteurs d'événements
(CastReceiverContext.addEventListener
)
et les intercepteurs de messages
(PlayerManager.setMessageInterceptor
).
Web Receiver peut avoir plusieurs écouteurs d'événements pour un événement (l'écouteur
n'affecte pas l'événement) et un intercepteur par message. L'intercepteur
peut mettre à jour la requête ou la gérer (afficher une requête modifiée, une requête réussie
message ou message d'erreur), et il peut s'agir d'un gestionnaire asynchrone qui renvoie une promesse.
L'intercepteur de requêtes de chargement est l'endroit le plus courant pour ajouter logique spécifique à l'application. Pour les requêtes de chargement provenant d'un expéditeur, la valeur peut convertir l'ID de contenu en URL de contenu. L'intercepteur de charge est également appelé pour les requêtes de préchargement et de pré-cache en l'absence d'intercepteur explicite a été fournie pour le préchargement ou la pré-cache.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
Le gestionnaire d'état des supports personnalisés v2 est également remplacé par un message
pour le message d'état du média. Applications Web Receiver qui ne souhaitent pas
exposer l'URL du contenu multimédia dans l'état du contenu peut fournir un résolveur d'URL ;
(PlayerManager.setMediaUrlResolver
),
qui fournit l'URL du média pour une requête de chargement. Cette URL est utilisée par la CAF
en interne et n'est pas indiquée dans l'état du média.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
Événements
Web Receiver fournit un ensemble complet d'événements provenant
CastReceiverContext
et
PlayerManager
Les applications Web Receiver peuvent avoir plusieurs écouteurs pour tout événement.
peut également fournir un écouteur pour plusieurs événements. (Voir
cast.framework.events.category
pour certains groupes d'événements.)
Ces événements couvrent toute requête de l'utilisateur, la progression de la lecture, le traitement du lecteur événement d'élément multimédia de bas niveau (CAF n'expose pas l'élément multimédia lui-même).
L'application Récepteur Web peut ajouter des écouteurs d'événements sur lesquels agir (par exemple, ajouter du texte suit la définition une fois le chargement terminé) ou à des fins d'analyse.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
Service de messagerie personnalisé
CAF n'expose pas le bus de messages dans l'API, mais fournit
CastReceiverContext.addCustomMessageListener
d'ajouter un écouteur de messages pour un espace de noms spécifique (un seul par espace de noms) ;
CastReceiverContext.sendCustomMessage
pour envoyer un message sur un espace de noms. Tous les espaces de noms doivent être déclarés avant
démarrer Web Receiver (c'est-à-dire, avant d'appeler
CastReceiverContext.start
).
Les espaces de noms peuvent être déclarés
en leur ajoutant un écouteur de message ou comme option de démarrage
CastReceiverOptions.customNamespaces
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
Interface utilisateur par défaut
CAF fournit une interface utilisateur Web Receiver par défaut qui affiche une barre de progression de la lecture et
des métadonnées multimédias selon les besoins. L'interface utilisateur par défaut est fournie sous la forme d'un élément personnalisé
(<cast-media-player>
)
qui peuvent être stylisées avec des styles CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Pour plus de personnalisation, une application Web Receiver peut implémenter sa propre interface utilisateur. La
Web Receiver fournit
cast.framework.ui.PlayerDataBinder
pour lier un objet UI à l'état de lecture du récepteur Web.