cambiar la ruta de audio cuando se reproduce el audio

Tengo un file de audio que se reproduce utilizando avaudioplayer, quiero poder reproducir el sonido en el receptor del dispositivo o el altavoz cuando el audio se reproduce cuando el usuario presiona un button. Cómo puedo hacer eso ? Actualmente solo se reproduce en lo que se seleccionó antes de que el audio comenzara a reproducirse.

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; OSStatus result = AudioSessionSetProperty( kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride ); Assert(result == kAudioSessionNoError); 

Versión iOS 6+

 NSError* error; AVAudioSession* session = [AVAudioSession shanetworkingInstance]; [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error]; 

Puede agregar control MPVolume ( enlace a la documentation ) a su interfaz de usuario y configurar showsVolumeSlider = NO y showRouteButton = YES.

El usuario tendrá un button de ruta para enrutar el audio a un dispositivo de su elección.