2011-11-10 10 views
12

Mi aplicación utiliza AVAudioPlayer para reproducir a través de listas de reproducción de audio. No he cambiado el código entre iOS4.3 e iOS5. Sin embargo, el audio en iOS5 se detiene en un bloqueo de pantalla a pesar de que he configurado la categoría como AVAudioSessionCategoryPlayback.AVAudioPlayer detiene la reproducción en bloqueo de pantalla aunque la categoría sea AVAudioSessionCategoryPlayback

He probado el código en dispositivos iOS4.3 e iOS5 y este problema ocurre en el dispositivo iOS5.

¿Alguien más ha enfrentado este problema? Estoy perdido, ya que no sé por dónde empezar a depurar este problema. Mi depuración comenzó y finalizó con la comprobación de la configuración de AVAudioSessionCategory.

El código donde lo estoy haciendo es:

[[AVAudioSession sharedInstance] setDelegate: self]; 
NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; 

Editar:

ya he implementado y manejado audioPlayerBeginInterruption

Edición # 2: Resuelto! Gracias a Rhythmic Fistman's Answer

Esto es lo que estaba sucediendo y lo que hice. Los cambios de iOS5 ahora llevan tu aplicación al fondo incluso cuando la pantalla se bloquea. Esto significa que debe habilitar el audio de fondo en su aplicación, y hacer que el controlador de vista/vista que maneja ese audio sea el primero en responder.

Paso 1: Enable background audio in your app

Paso 2: Enable remote events and become the first responder on the viewcontroller/view responsible for handling your audio playlist

NOTA: Asegúrese de poner a prueba esta en el dispositivo. El simulador hará que parezca que el código no funcionó.

Respuesta

12

Screenlock ha cambiado en iOS5, ahora envía su aplicación al fondo, por lo que si desea que su audio continúe debe agregar "audio" como UIBackGroundModes a su archivo Info.plist.

Lo más parecido que puedo encontrar a la documentación de esto son unos Apple devforumposts (se requiere iniciar sesión).

+0

¡Gracias! Me perdí esto ... Hice los cambios en el plist, pero aún así no me ayudó. Sin embargo, este es un buen comienzo para avanzar ... – Sid

+1

¡Resulta que no funciona en el simulador, pero funciona en el dispositivo! ¡Gracias!El siguiente paso para mí es configurar una tarea de fondo para ejecutar a través de la lista de reproducción, ya que se detiene después de reproducir la pista actual. – Sid

+0

Una vez que termine con este problema, voy a volver y editar esta pregunta para ayudar al próximo vagabundo sin pistas: D – Sid

1

No estoy muy acostumbrado con el audio, ¿pero miraste las interupciones? He leído algo que dice (en mis recuerdos) que el audio podría detenerse cuando ocurra una interrupción, y es su trabajo hacer que vuelva a jugar.

Pero es solo algo que viene de mi memoria. Eso ayuda ?

+0

Hola Oliver, gracias por tu respuesta. He implementado audioPlayerBeginInterruption y he establecido un punto de interrupción en ese método. El punto de quiebre no está siendo golpeado, así que no creo que esa sea la causa, lamentablemente. :) – Sid

+0

@Sid: como quiera, puedo dejar mi respuesta allí para ayudar a otros a ver la progresión de sus intentos, o puede insertarla como una edición en su pregunta y luego puedo eliminar mi respuesta si desea deja que tu pregunta se marque como "sin respuesta". Como quieras. – Oliver

+0

Deje la respuesta ser :) También haré ediciones a la pregunta .... gracias – Sid

Cuestiones relacionadas