2012-01-09 9 views
8

Creamos nuestra aplicación orientada a la música en html5 y javascript con Sencha touch. Para distribución lo envolvemos en xcode con UIwebView. Todo funciona bien, excepto una cosa que no funciona: reproducción de audio en modo multitarea.Continuar reproduciendo audio desde el reproductor html5 cuando está en modo de fondo iOS

Conozco la idea general: agregue UIBackgroundModes en info.plist.

Listo. Ahora podemos reproducir el audio incluso en modo de fondo.

Hasta que lleguemos al final de la canción. Para comenzar la próxima canción, tenemos que volver a poner la aplicación en primer plano o podemos presionar el botón reproducir o 'siguiente canción' en el controlador de audio del iPhone.

Después de algunas investigaciones encontré una solución prometedora en: "Entering background on iOS4 to play audio" donde la solución consiste en editar AVAudioSessionCategoryPlayback y trabajar con UIBackgroundTaskIdentifier. El problema para mí es (al igual que en cualquier otra solución que encontré hasta ahora) que esas soluciones supongan siempre que el audio se reproduce con AVaudioPlayer o MPMusicPlayerController. Pero en mi caso yo tampoco uso, nuestro audio es reproducido por nuestro reproductor html5 incluido en UIwebView.

¿Alguien tiene algún consejo sobre cómo continuar reproduciendo el audio en el modo multitarea de iOS cuando el reproductor de audio es un reproductor html5/javascript?

Respuesta

1

Gracias, muchachos, pero terminé simplemente manteniendo la aplicación ocupada en un bucle cuando estaba en modo de fondo. Esto fue suficiente para cerrar el tiempo cuando se conecta a la siguiente canción en la lista de reproducción. El código que utilicé es similar a este: iPhone - Backgrounding to poll for events

4

Mi aplicación reproduce audio a través de una etiqueta <audio> en html alojada en UIWebView, y es compatible con reproducción en segundo plano.

Como sugiere, debe tener el modo de fondo 'App plays audio' definido en su lista.

Trate de añadir esto a su manejador applicationDidFinishLaunching::

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

Usted podría intentar this, la adición de una función en el evento onend.

Cuestiones relacionadas