Отключить AirPlay с помощью MPMoviePlayerController

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

Конечно, я специально отключил AirPlay так:

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

myMPMoviePlayer.allowsAirPlay = NO;

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

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

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

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