Questa guida spiega come eseguire la migrazione di un'app Cast Ricevitore v2 alla versione più recente del web App del ricevitore.
Il nuovo SDK Cast Application Framework (CAF), noto anche come Web receiver v3, è un upgrade principale dall'SDK ricevitore v2. L'SDK WebRicevir fornisce un SDK semplice e semplificato per lo sviluppo di applicazioni Web receiver multimediali.
Il ricevitore web fornisce un'API più coerente con il nuovo mittente CAF su quelle di livello inferiore. Offre l'integrazione completa di un player (MPL e Shaka) e implementazione e supporto per la trasmissione di contenuti multimediali e l'Assistente Google comandi vocali. L'SDK CAF fornisce inoltre un'interfaccia utente predefinita con stili che possono essere facilmente definiti tramite CSS e un servizio di associazione dei dati per semplificare l'implementazione dell'interfaccia utente.
Perché eseguire la migrazione?
Eseguendo la migrazione di un'applicazione receiver v2 al ricevitore web, gran parte del codice con il player può essere eliminato, così puoi concentrarti sulla scrittura una logica di business specifica per l'applicazione.
CAF integra perfettamente i lettori MPL e Shaka per supportare una gamma più ampia di tipi di contenuti: HTTP Live Streaming (TS e CMAF), MPEG-DASH, isci Flussi di dati e tipi supportati dalla proprietà sorgente dell'elemento multimediale (MP3, MP4, Icecast ecc...). Per un elenco completo, consulta la sezione Contenuti multimediali supportati per Google Cast. Al momento CAF non supporta un player fornito dall'utente.
La migrazione al CAF aggiungerà il supporto per il controllo vocale con l'Assistente Google. Ogni nuovo comando vocale dell'Assistente Google sarà automaticamente supportato quando utilizzando CAF.
Oltre a supportare nuovi comandi multimediali, come "cambia tracce per lingua" e "cambia velocità di riproduzione", il CAF fornisce inoltre una migliore accodamento, annunci integrati e una migliore assistenza in tempo reale.
Che cosa è cambiato?
L'API Web receiver cerca di seguire le convenzioni introdotte Mittenti CAF per Android e iOS ed è molto diverso dalla versione 2.
Il ricevitore web utilizza un nuovo spazio dei nomi
cast.framework
invece dello spazio dei nomi cast.receiver
per tutte le API esposte. Molti di questi
gli oggetti dati utilizzati dalla versione 2 sono gli stessi nel CAF e sono esposti
il
cast.framework.messages
(erano per lo più sotto cast.receiver.media
).
I seguenti servizi v2 sono sostituiti dai servizi CAF corrispondenti:
- La classe
CastReceiverManager
è stata sostituita daCastReceiverContext
ossia un singleton che gestisce la sessione di trasmissione, i mittenti, messaggi ed eventi globali di sistema. LaCastReceiverOptions
può essere utilizzato per fornire opzioni globali per le applicazioni (come coda, versione, configurazione della riproduzione e così via) al contesto. - La classe
MediaManager
è stata sostituita daPlayerManager
che è una proprietàCastReceiverContext
singleton e gestisce la sessione multimediale, le richieste multimediali, Richieste vocali dell'assistente (CommandAndControlManager
in v2), e attiva gli eventi multimediali. Configurazione per i giocatori (cast.player.api.Host
in MPL) è fornito daPlaybackConfig
, che possono essere forniti a livello globale o per richiesta di carico.
PlayerManager
mostra anche le nuove classi per l'amministratore secondario:
TextTracksManager
: consente di gestire le tracce di testo multimediali.AudioTracksManager
: consente di gestire le tracce audio.QueueManager
: consente di gestire la coda.BreakManager
: gestisci gli annunci.
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);
Logica di business del destinatario
Gestori di eventi esposti del ricevitore v2 (come CastReceiverManager.onReady
o
MediaManager.onLoad
) per aggiungere la logica di business. Nel CAF i gestori di eventi
sostituiti da listener di eventi
(CastReceiverContext.addEventListener
)
e intercettatori di messaggi
(PlayerManager.setMessageInterceptor
).
Il ricevitore web può avere più listener di eventi per un evento (il listener
non influisce sull'evento) e un intercettore per messaggio. L'intercettore
aggiornare la richiesta o gestirla (restituire una richiesta modificata,
o un messaggio di errore) e può essere un gestore asincrono che restituisce una promessa.
L'intercettatore della richiesta di carico è il punto più comune da aggiungere una logica specifica per l'applicazione. Per le richieste di caricamento da parte di un mittente, l'intercettatore può convertire l'ID contenuti in URL dei contenuti. L'intercettatore del carico vengono anche chiamate richieste di precaricamento e di preregistrazione se non esistono intercettori espliciti è stato fornito per precaricamento o preregistrazione.
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;
});
Anche il gestore dello stato dei contenuti multimediali personalizzato v2 viene sostituito con un messaggio.
per il messaggio di stato dei contenuti multimediali. Le app di ricezione web che non vogliono
esporre l'URL multimediale nello stato dei contenuti multimediali può fornire un resolver URL
(PlayerManager.setMediaUrlResolver
),
che fornisce l'URL multimediale per una richiesta di caricamento. Questo URL è utilizzato dal CAF
internamente e non è indicato nello stato dei media.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
Eventi
WebRicevitore offre una vasta gamma di eventi sia da
CastReceiverContext
e
PlayerManager
.
Le app Web Ricevitore possono avere più listener per qualsiasi evento e
può anche fornire un listener per più eventi. (Vedi
cast.framework.events.category
per alcuni gruppi di eventi).
Gli eventi riguardano qualsiasi richiesta dell'utente, avanzamento della riproduzione, elaborazione del player e qualsiasi evento elemento multimediale di basso livello (CAF non espone l'elemento multimediale stesso).
L'app WebRicevitore può aggiungere listener di eventi su cui agire (ad esempio, aggiungere testo monitora la definizione al termine del caricamento) o per l'analisi.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
Bus di messaggi personalizzato
Il CAF non espone il bus di messaggi nell'API, ma fornisce
CastReceiverContext.addCustomMessageListener
aggiungere un listener di messaggi per uno spazio dei nomi specifico (solo uno per spazio dei nomi) e
CastReceiverContext.sendCustomMessage
per inviare un messaggio in uno spazio dei nomi. Tutti gli spazi dei nomi devono essere dichiarati prima
avviando il ricevitore web (vale a dire, prima di chiamare
CastReceiverContext.start
).
Gli spazi dei nomi possono essere dichiarati
di aggiungere un listener di messaggi o che possono essere forniti come opzione di inizio
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'
});
UI predefinita
Il CAF fornisce un'interfaccia utente di ricezione web predefinita che mostra una barra di avanzamento della riproduzione e
metadati multimediali necessari. L'interfaccia utente predefinita viene fornita come elemento personalizzato
(<cast-media-player>
)
a cui è possibile applicare stili
in stile CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Per una maggiore personalizzazione, un'app Web Ricevitore può implementare la propria UI. La
Web Ricevitore fornisce
cast.framework.ui.PlayerDataBinder
per collegare un oggetto UI allo stato di riproduzione del ricevitore web.