Отключить AirPlay с помощью MPMoviePlayerController - PullRequest
10 голосов
/ 13 октября 2011

У меня есть экземпляр MPMoviePlayerController, который используется для отображения потокового видео в приложении для iPhone.Это работает нормально, однако я хочу удалить все функциональные возможности AirPlay.

Конечно, я специально отключаю AirPlay следующим образом:

if([self.moviePlayerController respondsToSelector:@selector(setAllowsAirPlay:)]) {
    self.moviePlayerController.allowsAirPlay = NO;
}

Однако, даже с этим кодом я все еще вижузначок AirPlay на элементах управления видео.Если я выберу это и выберу AppleTV, через AirPlay будет передаваться только звук - видео продолжает воспроизводиться в приложении.Если я установлю allowsAirPlay на YES, видео и аудио будут отправлены через AirPlay.

Кто-нибудь знает, почему это происходит?Это особенность ОС, позволяющая передавать звук через AirPlay?

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

Оказывается, значок AirPlay все еще виден (и должен оставаться видимым), так что звук можно направлять на любое подходящее устройство, например. гарнитура Bluetooth. Попытка скрыть значок считается плохой практикой.

2 голосов
/ 06 августа 2014

Я знаю, это старый вопрос, но все же, может быть, это поможет кому-то еще.
У Apple есть следующий API, чтобы скрыть кнопку маршрута (AirPlay)

@property (nonatomic) BOOL showsRouteButton NS_AVAILABLE_IOS(4_2);  // Default is YES.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 19 марта 2015

@ Philip K, ваш намек почти решил эту проблему для меня, отладив примерно четырехлетний код. showsRouteButton не является свойством в MPMoviePlayerController, и я попытался установить:

myMPMoviePlayer.allowsAirPlay = NO;

Но это ничего не сделало ...

И мы используем пользовательские элементы управления для нашего видеоплеера, и обнаружили, что кнопка маршрута является частью MPVolumeView, и ваш трюк применяется там:

MPVolumeView * vView = [[MPVolumeView alloc] initWithFrame: bounds];
vView.showsRouteButton = NO;

Бинго! Спасибо.

...