Ответ 1
Оказывается, значок AirPlay все еще отображается (и должен оставаться видимым), чтобы звук можно было перенаправить на любое подходящее устройство, например. Bluetooth-гарнитуру. Попытка скрыть значок считается плохой практикой.
У меня есть экземпляр MPMoviePlayerController
, который используется для отображения некоторого видео в прямом эфире в приложении для iPhone. Это прекрасно работает, однако я хочу удалить все возможности AirPlay.
Конечно, я специально отключил AirPlay так:
if([self.moviePlayerController respondsToSelector:@selector(setAllowsAirPlay:)]) {
self.moviePlayerController.allowsAirPlay = NO;
}
Однако даже с этим кодом я все еще вижу значок AirPlay на элементах управления видео. Если я выберу это и выберите свой AppleTV, только аудио передается через AirPlay - видео продолжает воспроизводиться в приложении. Если я установил allowsAirPlay
в YES
, видео и аудио передаются через AirPlay.
Кто-нибудь знает, почему это происходит? Является ли это признаком ОС, позволяющим передавать аудио через AirPlay?
Оказывается, значок AirPlay все еще отображается (и должен оставаться видимым), чтобы звук можно было перенаправить на любое подходящее устройство, например. Bluetooth-гарнитуру. Попытка скрыть значок считается плохой практикой.
Я знал его старый вопрос, но, возможно, это поможет кому-то другому.
Apple имеет следующую апию, чтобы скрыть кнопку маршрута (AirPlay)
@property (nonatomic) BOOL showsRouteButton NS_AVAILABLE_IOS(4_2); // Default is YES.
Надеюсь, это поможет кому угодно.
@Philip K, ваш намек почти решил это для меня, отлаживая четырехлетний код. showRouteButton не является свойством на MPMoviePlayerController, и я пробовал настройку:
myMPMoviePlayer.allowsAirPlay = NO;
Но это ничего не делало...
И мы используем пользовательские элементы управления для нашего видеоплеера и обнаружили, что кнопка маршрута является частью MPVolumeView, и ваш трюк применяется там:
MPVolumeView * vView = [[MPVolumeView alloc] initWithFrame: bounds];
vView.showsRouteButton = NO;
Бинго! Спасибо.