Starting from iOS6 AudioSession exposes currentRoute to you, which allows retrieving it's port information as well as listening to audioRouteChangeNotification.
(so you no longer need to use C-based API from AudioToolbox framework):
NSString* airplayName = [self activeAirplayOutputRouteName];
if (airplayName) {
//airplay is active
}
(what you want to get is the portDescription of currentAudioRoute):
- (NSString*)activeAirplayOutputRouteName
{
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
AVAudioSessionRouteDescription* currentRoute = audioSession.currentRoute;
for (AVAudioSessionPortDescription* outputPort in currentRoute.outputs){
if ([outputPort.portType isEqualToString:AVAudioSessionPortAirPlay])
return outputPort.portName;
}
return nil;
}