Question

I have an instance of a MPMoviePlayerController which is being used to display some live streaming video on an iPhone app. This is working fine, however I wish to remove all AirPlay functionality.

To be sure, I specifically disable AirPlay like so:

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

However, even with this code, I still see the AirPlay icon on the video controls. If I select this, and select my AppleTV, only the audio is sent over AirPlay - the video continues to play within the app. If I set allowsAirPlay to YES, both the video & audio are sent over AirPlay.

Does anyone know why this happens? Is this a feature of the OS, to allows allow the audio to be sent over AirPlay?

Was it helpful?

Solution

It turns out that the AirPlay icon is still visible (and should remain visible) so that audio can be routed to any suitable device, eg. a Bluetooth headset. Attempting to hide the icon is considered bad practice.

OTHER TIPS

I known its an old question but still maybe this will help someone else.
Apple has the following api to hide the route button (AirPlay)

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

Hope this helps anyone.

@Philip K, your hint almost solved this for me, debugging some four year old code. showsRouteButton isn't a property on the MPMoviePlayerController, and I tried setting:

myMPMoviePlayer.allowsAirPlay = NO;

But this did nothing...

And we are using custom controls for our video player, and found that the route button is a part of the MPVolumeView, and your trick applies there:

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

Bingo! Thanks.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top