2013-08-13 4 views
5

Вариант использования: пользователь начинает воспроизведение со своего iPhone, скажет, а затем берет свой iPad (оба запускает мое приложение) и хочет нарушить и управлять запуск видео с этого другого устройства iOS.Как проверить, выполняется ли сеанс ChromeCast

В iOS я не вижу способа определить, есть ли экземпляр моего приложения-получателя, уже запущенного на устройстве Google ChromeCast. Как только я создаю свой сеанс, кажется, единственное, что я могу сделать, это подключить новый поток сообщений протокола, который прерывает все, что может быть уже воспроизведено.

Предположим, что это должно быть обработано на стороне клиента iOS Framework, возможно, есть некоторая кодировка, которую мне нужно сделать в приложении-получателе HTML?

Спасибо.

+0

Пример Tic Tac Toe демонстрирует многопользовательский режим, может ли он каким-то образом измениться? –

ответ

1

Один из способов - проверить playStatus после начала сеанса и до того, как вы начнете loadMedia(). Если ваше приложение уже запущено - оно должно вернуть результат non-nil (т.е. IDLE, PLAYING, ...).

+0

Спасибо, я попробую сейчас и отчитаюсь. – greg

+0

Ну, похоже, это не сработало. Я получаю состояние игрока -1 (Неизвестно) каждый раз. Я получаю немного другое поведение, хотя в зависимости от того, как я начинаю сеанс. Если я передаю applicationArgument, то текущий текущий приемник будет убит до того, как я когда-нибудь вернусь. В других формах startSession не убивает запущенного приемника, но они всегда возвращают состояние игрока -1 (вся другая информация о состоянии также неинициализируется). – greg

+0

Как вы запрашиваете состояние игрока? – osxdirk

5

Существует способ вне API, чтобы определить, работает ли приложение. Сделайте HTTP GET в URL-адресе приложений для IP-адреса ChromeCast: http://192.168.0.x:8008/apps/ Если ответ HTTP составляет 200, ничего не выполняется. Если ответ HTTP равен 204, приложение будет запущено, и HTTP-ответ будет перенаправлен на URL-адрес, например: http://192.168.0.x:8008/apps/GoogleMusic

Сообщает, какое приложение запущено.

Интересно, что Google Play Музыка не может управляться одновременно двумя устройствами, но YouTube может. Я подозреваю, что Play Music использует RAMP, что делает Cast SDK для медиапотоков. YouTube может использовать запатентованный поток сообщений для управления воспроизведением мультимедиа. Таким образом, вам может понадобиться сделать то же самое, если вы хотите, чтобы приложение находилось на устройстве, контролируемом несколькими приложениями-отправителями.

+0

Спасибо, Leon, это полезная информация, я в конечном итоге использую ее. Оказывается, ответ, который я был после, просто не передал аргумент приложения startSessionWithApplication :, то это будет изящно подключаться к существующей хромовой сессии. Если вы передадите аргумент, он разрушит существующий сеанс и создаст новый из вашего приложения-получателя. Это предполагает, что одно и то же приложение работает там (тот же самый appID). – greg

+0

Leon, у меня есть аналогичный прецедент: я нахожу видео youtube, и в отдельном сценарии я хочу получить текущий сеанс. В основном, я хочу, чтобы он получил полный URL-адрес видео youtube, который включает в себя идентификатор видео. Идентификатор видео - это то, что я хочу! Должен ли я начать отдельный вопрос, и, возможно, вы могли бы ответить на него там? – Ali

+0

Начиная с августа '17, я получаю ответ «204 без содержимого», независимо от состояния устройства – Dermot

Смежные вопросы