AVAudioSession setCategory no funciona

Tengo una aplicación de captura de video y quiero poder reproducir música de background mientras grabo audio + video.

Puedo lograr esto si configuro la categoría PlayAndRecord en didFinishLaunchingWithOptions en didFinishLaunchingWithOptions . Sin embargo, esto provoca una falla en el audio cada vez que la vista con la camera entra o sale del primer plano, y es aparentemente imposible deshacerse de: https://forums.developer.apple.com/message/74778#74778

Puedo vivir con la falla si sucede cuando comienzo / paro grabar video, pero eso significa que necesito cambiar la categoría AVAudioSession de Ambient a PlayAndRecord cuando se presiona un button, y esto también parece no ser posible.

¿Cómo cambio la categoría AVAudioSession ?

He intentado esto:

 [[AVAudioSession shanetworkingInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; 

Pero la música de background se detiene cuando comienza la grabación.

Siguiendo esta publicación: AVCaptureSession y audio de background iOS 7

Intenté desactivar la session y luego establecer la categoría:

 AVAudioSession *session = [AVAudioSession shanetworkingInstance]; [session setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error]; [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; [session setActive:YES error:&error]; 

También intenté escuchar la AVAudioSessionRouteChangeNotification y configurar la categoría en ese controller después de desactivar la session. Pero la música de background siempre se apaga cuando la aplicación comienza a grabar.

¿Por qué no puedo cambiar la categoría AVAudioSession ?

Por favor testing esta categoría

AVAudioSessionCategoryMultiRoute

o marque ambas categorías AVAudioSessionCategoryPlayAndRecord | AVAudioSessionCategoryRecord