Ésta es una vieja pregunta, pero la otra respuesta no me ayudó a ... Sin embargo, he encontrado una solución que estoy publicando para referencia futura en caso de que alguien (o yo mismo desde el futuro!) lo necesita.
La solución se describe en la siguiente publicación de blog: iOS: Force audio output to speakers while headphones are plugged in.
Necesita crear un nuevo AudioRouter de la clase Objective-C en su proyecto. A continuación, importe AudioRouter.h
en el archivo de encabezado de la clase en la que está iniciando la funcionalidad de audio. A continuación, en el archivo correspondiente .m
añadir las siguientes líneas dentro viewDidLoad
método:
AudioRouter *foobar = [[AudioRouter alloc] init];
[foobar initAudioSessionRouting];
[foobar forceOutputToBuiltInSpeakers];
Ahora usted tiene de audio (por ejemplo AVAudioPlayer) salida forzada al altavoz! Tenga en cuenta que si conecta los auriculares mientras se está ejecutando la aplicación, entonces toda la salida de audio se dirige a los auriculares.
¿Esto funciona con AVAudioPlayer o sólo AudioServices? –
Una nota para los demás que se encuentran con esta respuesta: las dos primeras líneas del código de muestra son irrelevantes y, si usted es como el OP (que también está grabando audio), estas líneas evitarán que la grabación funcione correctamente. – Steve
Esto funcionó para mí con un ajuste: cambié sessionCategory para que fuera kAudioSessionCategory_PlayAndRecord. – Jacob