La seguente procedura ti consente di convertire l'app mittente iOS dall'SDK Cast v2 al mittente CAF, basato sulla GCKCastContext singleton.
Introduzione
- Il mittente CAF è ancora distribuito sito web per sviluppatori Google Cast e CocoaPods, ad esempio v2.
- Sono stati aggiunti nuovi corsi che si assumono la responsabilità di rispettare l'elenco di controllo per la progettazione di Google Cast.
- CAF Sender fornisce widget conformi ai requisiti di Cast UX. v2 non forniva componenti dell'interfaccia utente e richiedeva l'implementazione questi widget.
- Il design di CAF Sender è coerente con il design dell'SDK Cast Android.
- Il mittente CAF supporta il formato bitcode, come la versione 2.
- Il sottotitolaggio codificato in CAF è simile alla versione 2.
Dipendenze
CAF Sender supporta iOS 8 e versioni successive.
Inizializzazione
In CAF, è richiesto un passaggio di inizializzazione esplicito per il framework Cast. Questo
comporta l'inizializzazione
GCKCastContext
singleton, utilizzando un'appropriata
GCKCastOptions
per specificare l'ID applicazione Web ricevitore e qualsiasi altro
le opzioni di CPU e memoria disponibili. Questa operazione viene solitamente eseguita in AppDelegate
Metodo -[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
Questo passaggio non era necessario nella versione 2.
Rilevamento dispositivi
In CAF, il processo di rilevamento viene avviato e arrestato automaticamente dal
quando l'app passa in primo piano e passa in background,
rispettivamente. Le classi GCKDeviceScanner
e GCKFilterCriteria
della versione 2 sono
è deprecato e non deve essere utilizzato.
Pulsante Trasmetti e finestra di dialogo Trasmetti
Nel CAF, il pulsante Trasmetti e la finestra di dialogo sono forniti dal framework. Cast per creare un'istanza e aggiungerlo alla barra di navigazione in questo modo:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
Il pulsante Trasmetti può essere aggiunto anche allo storyboard.
Quando qualcuno tocca il pulsante, viene visualizzata automaticamente la finestra di dialogo Trasmetti.
Controllo del dispositivo
In CAF, il controllo dei dispositivi è gestito in gran parte dal framework. Il mittente
non ha bisogno di gestire la connessione al dispositivo e l'avvio
Applicazione WebRicevitore. Il corso v2
GCKDeviceManager
è deprecato e dovrebbe
non possono essere utilizzate. L'interazione tra mittente e destinatario web è ora rappresentata come
"sessione". Il CAF
GCKSessionManager
gestisce il ciclo di vita delle sessioni
avvia e interrompe automaticamente le sessioni in risposta ai gesti dell'utente: una sessione
L'avvio viene avviato quando l'utente seleziona un dispositivo di trasmissione nella finestra di dialogo Trasmetti e viene terminato
Quando l'utente tocca l'opzione "Interrompi trasmissione". nella finestra di dialogo Trasmetti o quando
dall'app mittente. L'applicazione del mittente può ricevere una notifica
degli eventi del ciclo di vita registrando un
GCKSessionManagerListener
con
GCKSessionManager
.
La
GCKSessionManagerListener
definisce i metodi di callback per tutti gli eventi del ciclo di vita delle sessioni.
La
GCKCastSession
rappresenta una sessione con un dispositivo di trasmissione. Il corso
offre metodi per controllare il volume del dispositivo e gli stati di disattivazione dell'audio, che erano
fatto in precedenza nella versione 2 con metodi
GCKDeviceManager
Nella versione 2,
GCKDeviceManagerDelegate
notifiche delle modifiche fornite dal protocollo
allo stato del dispositivo, compresi volume, stato di disattivazione audio, stato di standby e così via.
Nel CAF, le notifiche relative al cambio di stato/volume/audio vengono inviate tramite callback
in
GCKSessionManagerListener
protocollo; questi listener sono registrati con
GCKSessionManager
.
Tutte le altre notifiche sullo stato del dispositivo
tramite un
GCKCastDeviceStatusListener
protocollo; questi listener sono registrati con
GCKCastSession
.
Logica di riconnessione
Come nella versione 2, CAF tenta di ristabilire le connessioni di rete persi a causa di una perdita temporanea del segnale Wi-Fi o di altri errori di rete. Questo è a livello di sessione; una sessione può inserire uno stato "sospesa" quando la connessione si interrompe e tornerà allo stato "connesso" stato quando e la connettività viene ripristinata. Il framework si occupa di riconnettersi Web Ricevitore e la riconnessione di eventuali canali di trasmissione nell'ambito di questa procedura.
Inoltre, CAF aggiunge anche la ripresa automatica delle sessioni. Se il mittente
l'applicazione viene inviata in background o terminata (scorrimento all'esterno o
a causa di un arresto anomalo) mentre è in corso una sessione di trasmissione, il framework
e tentare di riprendere la sessione quando l'applicazione del mittente torna
in primo piano o riavviati; questa operazione viene gestita automaticamente
GCKSessionManager
,
che emetterà i callback appropriati su qualsiasi registrato
GCKSessionManagerListener
di Compute Engine.
Registrazione a canali personalizzati
Nella versione 2, i canali personalizzati (implementati mediante un
GCKCastChannel
o una sottoclasse
GCKGenericChannel
e delegato) sono stati registrati presso
GCKDeviceManager
Nel CAF, i canali personalizzati vengono invece registrati con
GCKCastSession
in esecuzione in un'istanza Compute Engine. La registrazione può essere effettuata nella
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
di callback di Google. Per le applicazioni multimediali, non è più necessario specificare
registra il
GCKMediaControlChannel
consulta la sezione che segue per ulteriori dettagli.
Controllo dei contenuti multimediali
Il corso v2
GCKMediaControlChannel
è deprecato e non deve essere utilizzato. In CAF, viene sostituito dal nuovo
GCKRemoteMediaClient
, che fornisce funzionalità equivalenti in un'API più comoda.
Non è necessario inizializzare o registrare esplicitamente questo oggetto. il
il framework creerà automaticamente un'istanza dell'oggetto e registrerà i dati sottostanti
canale multimediale all'ora di inizio della sessione se l'applicazione WebRicevitore viene connessa
lo spazio dei nomi dei media.
La
GCKRemoteMediaClient
è accessibile con
-[remoteMediaClient]
proprietà del
GCKCastSession
.
Nella versione 2, tutte le richieste di contenuti multimediali emesse nella
GCKMediaControlChannel
restituisce un ID richiesta numerico, mentre i metodi
GCKMediaControlChannelDelegate
deve fornire questo ID quando invii notifiche sul completamento della richiesta
errore.
Nel CAF, tutte le richieste di contenuti multimediali emesse il
GCKRemoteMediaClient
restituirà un
GCKRequest
object; all'oggetto è associato
GCKRequestDelegate
protocollo
che possono essere utilizzate per monitorare l'avanzamento e l'esito finale della richiesta.
La versione 2
GCKMediaControlChannel
invia notifiche relative ai cambiamenti dello stato del media player sul ricevitore web
tramite
GCKMediaControlChannelDelegate
.
Nel CAF, il parametro
GCKRemoteMediaClient
fornisce callback equivalenti tramite
GCKRemoteMediaClientListener
protocollo. È possibile registrare un numero qualsiasi di listener con il
GCKRemoteMediaClient
, che consente a più componenti di mittenti di condividere
singola istanza di GCKRemoteMediaClient
associata alla sessione.
Nella versione v2, l'applicazione del mittente doveva assumersi l'onere di mantenere l'utente
sincronizzata con lo stato del media player sul ricevitore web. Nel CAF, il corso
GCKUIMediaController
si assume gran parte di questa responsabilità; vedi il
tutorial codelab
documentazione per esempi sull'utilizzo di questo componente.
Overlay introduttivo
V2 non fornisce UI overlay introduttivo.
Il CAF aggiunge la classe
GCKCastContext
con un metodo
-[presentCastInstructionsViewControllerOnce]
che un'app del mittente può utilizzare per evidenziare il pulsante Trasmetti quando viene mostrato per la prima volta
agli utenti.
Mini controller
Nella versione 2, devi implementare un mini controller da zero nella dell'app del mittente.
In CAF, il framework fornisce una barra di controllo,
GCKUIMiniMediaControlsViewController
,
che puoi aggiungere alle scene in cui vuoi mostrare i
i controlli di sicurezza. Esistono due modi per aggiungere il mini controller a un'app mittente:
Lascia che il framework Cast gestisca il layout del mini controller eseguendo il wrapping il tuo controller di visualizzazione esistente
GCKUICastContainerViewController
e l'aggiunta di unGCKUIMiniMediaControlsViewController
nella parte inferiore della sua visualizzazione.Aggiungi il mini controller direttamente al controller di visualizzazione esistente utilizzando
-[createMiniMediaControlsViewController]
per creare unGCKUIMiniMediaControlsViewController
e poi aggiungerla al controller della vista container come vista secondaria.
Controller espanso
Nella versione v2, devi implementare un controller espanso da zero l'app del mittente.
Aggiunte CAF
GCKUIMediaController
,
che potresti usare per implementare più facilmente
un controller espanso.
CAF aggiunge un widget controller espanso predefinito
GCKUIExpandedMediaControlsViewController
che puoi aggiungere alla tua app. Non devi più implementare un'espansione personalizzata
un controller utilizzando GCKUIMediaController
.
Logging del debug
La
GCKLogger
e
GCKLoggerDelegate
vengono trasferite in CAF, con alcuni miglioramenti e modifiche.
La
GCKLoggerDelegate
Il metodo -[logFromFunction:message:]
ha
è stato ritirato a favore di
-[logMessage:fromFunction:]
.
I messaggi di log del framework ora possono essere filtrati costruendo un messaggio
GCKLoggerFilter
all'istanza e assegnandole impostando
-[filter]
della proprietà
GCKLogger
singleton.
App di esempio
Ti consigliamo di esaminare le codelab e app di esempio scritte per CAF.