2013-08-13 23 views
5

Il caso di utilizzo è che un utente avvia la riproduzione dal proprio iPhone, per esempio, e preleva l'iPad (entrambi che eseguono la mia app) e vuole contenerlo e controllarlo in esecuzione video da questo altro dispositivo iOS.Come verificare se una sessione ChromeCast è già in corso

Su iOS, non vedo alcun modo per determinare se esiste un'istanza della mia app ricevente già in esecuzione sul dispositivo Google ChromeCast. Una volta creata la mia sessione, sembra che l'unica cosa che posso fare sia allegare un nuovo stream di messaggi di protocollo, che interrompe qualsiasi cosa possa già essere riprodotta.

Questo supponiamo di essere gestito nel framework lato client iOS, forse c'è qualche codice che devo fare nell'app ricevente HTML?

Grazie.

+0

L'esempio di Tic Tac Toe dimostra il multiplayer, potrebbe essere in qualche modo ottimizzato? –

risposta

1

Un metodo consiste nel controllare il playStatus dopo aver avviato la sessione e prima di iniziare un loadMedia(). Se la tua app è già in esecuzione, dovrebbe restituire un risultato non nullo (cioè IDLE, PLAYING, ...).

+0

Grazie, ci proverò ora e riferirò. – greg

+0

Beh, non sembra funzionare. Ottengo lo stato del giocatore di -1 (Sconosciuto) ogni volta. Ho un comportamento leggermente diverso a seconda di come inizio la sessione. Se passo un applicationArgument, il ricevitore corrente in esecuzione viene ucciso prima che io riceva la chiamata. Le altre forme sono startSession non uccidono il ricevitore in esecuzione, ma restituiscono sempre uno stato giocatore di -1 (tutte le altre informazioni sullo stato sembrano non inizializzate). – greg

+0

Come si richiede lo stato del giocatore? – osxdirk

5

Esiste un modo all'esterno dell'API per determinare se un'applicazione è in esecuzione. Esegui un GET HTTP sull'URL dell'app per l'indirizzo IP ChromeCast: http://192.168.0.x:8008/apps/ Se la risposta HTTP è 200, non è in esecuzione nulla. Se la risposta HTTP è 204, un'app è in esecuzione e la risposta HTTP verrebbe reindirizzata a un URL come: http://192.168.0.x:8008/apps/GoogleMusic

Che indica quale app è in esecuzione.

È interessante notare che Google Play Music non può essere controllato da 2 dispositivi contemporaneamente, ma YouTube può. Sospetto che Play Music stia utilizzando RAMP, ovvero ciò che l'SDK Cast esegue per i flussi multimediali. YouTube potrebbe utilizzare un flusso di messaggi proprietario per controllare la riproduzione multimediale. Quindi potresti dover fare lo stesso se vuoi avere un'app su un dispositivo controllato da più app di invio.

+0

Grazie Leon, sono informazioni utili, finirò per usarlo. Risulta che la risposta che stavo cercando era di non passare un argomento dell'applicazione a startSessionWithApplication: in questo modo si collegherebbe alla sessione chromecast esistente con garbo. Se passi un argomento, abbatterà la sessione esistente e ne creerà una nuova dall'app ricevente. Ciò presuppone che la stessa app sia in esecuzione lì, ovviamente (stesso appID). – greg

+0

Leon, ho un caso d'uso simile: sto lanciando un video su youtube, e in uno script separato voglio ottenere la sessione corrente. Fondamentalmente quello che voglio per ottenere l'URL completo del video di YouTube, che include l'ID del video. L'ID del video è ciò che sto cercando! Devo iniziare una domanda separata e forse potresti rispondere lì? – Ali

+0

A partire dal mese di agosto '17, ottengo una risposta '204 No content', indipendentemente dallo stato del dispositivo – Dermot

Problemi correlati