Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a ChromeCast Session is already in progress

Tags:

google-cast

The use case is that a user starts playback from their iPhone, lets say, and then picks up their iPad (both running my app) and wants to contect to and control the running video from this other iOS device.

On iOS, I do not see any way to determine if there is a instance of my receiver app already running on the Google ChromeCast device. Once I create my session it seems the only thing I can do is to attach a new protocol message stream, which interrupts whatever might be playing already.

It this suppose to be handled in the iOS client side Framework, perhaps there is some coding I need to do in the HTML receiver app?

Thanks.

like image 324
greg Avatar asked Aug 13 '13 21:08

greg


2 Answers

There is a way outside the API to determine if an app is running. Do a HTTP GET on the apps URL for the ChromeCast IP address: http://192.168.0.x:8008/apps/ If the HTTP response is 200, nothing is running. If the HTTP response is 204, then an app is running and the HTTP response would be redirected to a URL like: http://192.168.0.x:8008/apps/GoogleMusic

Which tells you which app is running.

Interestingly, Google Play Music cannot be controlled by 2 devices simultaneously, but YouTube can. I suspect Play Music is using RAMP which is what the Cast SDK does for media streams. YouTube could be using a proprietary message stream to control the media playback. So you might have to do the same if you want to have the an app on a device controlled by multiple sender apps.

like image 59
Leon Nicholls Avatar answered Jan 01 '23 19:01

Leon Nicholls


One method is to check the playStatus after you start your session and before you initiate a loadMedia(). If your app is already running - it should return a non-nil (ie. IDLE, PLAYING, ...) result.

like image 38
Paul Carff Avatar answered Jan 01 '23 20:01

Paul Carff