2011-10-13 10 views
10

Mam instancję z MPMoviePlayerController, która jest używana do wyświetlania niektórych strumieniowych transmisji wideo na żywo w aplikacji na iPhone'a. Działa to dobrze, jednak chcę usunąć wszystkie funkcje AirPlay.Wyłącz AirPlay z MPMoviePlayerController

Aby mieć pewność, że specjalnie wyłączyć AirPlay tak:

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

Jednak nawet z tym kodem, wciąż widzę ikonę AirPlay na kontroli wideo. Jeśli wybiorę to i wybiorę AppleTV, tylko dźwięk zostanie przesłany przez AirPlay - wideo będzie nadal odtwarzane w aplikacji. Jeśli ustawię allowsAirPlay na YES, oba wideo & będą przesyłane przez AirPlay.

Czy ktoś wie, dlaczego tak się dzieje? Czy jest to funkcja systemu operacyjnego, która pozwala na przesyłanie dźwięku przez AirPlay?

+0

Czy próbowałeś ustawić 'useApplicationAudioSession = NO;'? –

+0

Mam teraz - nie wydaje się, aby żadnych różnic obawiam się. –

+0

Czy ustawiłeś allowAirPlay przed ustawieniem adresu URL odtwarzacza? – jbat100

Odpowiedz

4

Okazuje się, że ikona AirPlay jest nadal widoczna (i powinna pozostać widoczna), aby dźwięk mógł być kierowany do dowolnego odpowiedniego urządzenia, np. zestaw słuchawkowy Bluetooth. Próba ukrycia ikony jest uważana za złą praktykę.

+0

Dość stare pytanie; ale czy jest jakaś szansa na link do dokumentacji Apple, która to wspiera? – Craig

+1

Przepraszam, nie - rzeczywiście otrzymałem odpowiedź od inżyniera Apple na jednym z ich Tech Talks. Jeśli myślisz o tym logicznie, ma to sens. Ci, którzy chcą używać zestawu słuchawkowego Bluetooth lub głośników, powinni zawsze móc z nich korzystać, ponieważ mogą być niedosłyszące itp. –

+0

Dzięki. Myślę, że ma to sens, istnieje jedynie obawa o licencjonowanie treści. – Craig

2

Znam to stare pytanie, ale może to pomoże komuś innemu.
Apple ma następujące API do ukrycia przycisk trasy (AirPlay)

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

nadzieję, że pomoże nikomu.

0

@Philip K, twoja podpowiedź prawie rozwiązała to dla mnie, debugując jakiś czteroletni kod. showsRouteButton nie jest właściwością na MPMoviePlayerController i starałem ustawienie:

myMPMoviePlayer.allowsAirPlay = NO; 

Ale to nic nie zrobił ...

I używamy formantów niestandardowych dla naszego odtwarzacza wideo, a okazało się, że przycisk trasa jest częścią MPVolumeView i obowiązuje tam Twoja sztuczka:

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

Bingo! Dzięki.