Pregunta

He pasado dos días en esto y han llegado a ninguna parte. Estoy tratando de utilización [MPMusicPlayerController applicationMusicPlayer] para reproducir el audio seleccionado de la biblioteca de iPod del usuario y hacer que se ejecute en segundo plano, así como eventos de soporte remoto. Ahora conseguir la música jugando en realidad es la parte fácil. Obtener la instancia, elegir las canciones, asigne la cola de la música y el juego. Hecho y hecho. PERO ... a) No puedo conseguir que se reproduzca en el fondo, y b) aun cuando en el primer plano no puedo obtener los eventos de control remoto funcione en absoluto!

Y antes de preguntar, sí, he puesto las entradas plist, la categoría de sesión de audio, la llamada a decir que estoy interesado en conseguir eventos remotos y establecer un primer nivel de respuesta a escuchar para ellos, así que por favor saber, sí , he leído leer todos los documentos sobre el tema que pude encontrar * (* una tarea culpo a Apple por por no ser clara en absoluto sobre este tema, ni tendrá código de ejemplo para él!) y he visto todas las uno de los videos WWDC relacionados con él (incluso congelar la pantalla para copiar el código exactamente de su ejemplo ...) por lo menos me he perdido algo no en esta lista , en respuesta a cualquiera de estas respuestas no va a ayudar.

Una cosa más ... estoy hablando de manera explícita sobre el uso del MPMusicPlayerController que de acuerdo con los documentos, nunca usa una sesión de aplicación. Se utiliza siempre la sesión del sistema. (Tal vez que en sí mismo contesta mi pregunta, pero los documentos no dicen claramente que lo que no estoy seguro, por lo tanto, a esta pregunta.)

Dicho esto, después de dos días, mis pensamientos son esto:

  1. Cuando se utiliza el MPMusicPlayerController, independientemente de lo que se llama a los métodos o qué entradas plist que ha establecido, su aplicación será nunca se queda en el fondo. Período. Si utiliza la instancia ipodMusicPlayer, la música sigue sonando, pero eso es porque es el iPod que está jugando, no su aplicación. Si utiliza la instancia applicationMusicPlayer lugar, cuando se va al fondo de la música se detiene. En ambos casos, se suspende su aplicación.

  2. A pesar de que su uso de los casos ipodMusicPlayer o applicationMusicPlayer, todos los eventos remotos vaya a la aplicación iPod en sí, no el suyo, aunque lo solicitado expresamente para ellos. Si está utilizando la instancia applicationMusicPlayer y utilice el control remoto para seleccionar 'Play', la aplicación iPod recibe la orden para que sus patos salida de sonido y se interrumpe y la reproducción comienza en la aplicación iPod. Si has elegido la ipodMusicPlayer lugar, entonces, por supuesto, no importa como se ha dicho explícitamente que está básicamente interesado en controlar de forma remota la aplicación iPod que a su vez, es lo que realmente recibe los eventos remotos.

  3. El icono en los controles de cambio rápido en el fondo nunca cambia al icono de la aplicación porque, de nuevo, su aplicación no se establece nunca realmente para recibir los eventos. La aplicación iPod es, por lo que su icono aparece allí.

Así que lo que quiero saber es ... estoy mal aquí? Alguien ha sido capaz de utilizar con éxito MPMusicPlayerController y ha sido capaz de interceptar los eventos remotos? Mientras que prefiero utilizar el applicationMusicPlayer con el apoyo de la música de fondo, así que no lodo con el iPod del usuario, la cosa más grande es notificaciones de control remoto, es decir, si tengo que usar el ipodMusicControl y mantener la aplicación en primer plano a los que interceptan mensajes, que así sea. Es feo de esa manera, pero al menos es algo.

Los ejemplos de código, o por lo menos medidas explícitas contra uno de los incorporados en las plantillas de aplicaciones sería muy apreciada. (Ni siquiera necesita la puesta en práctica ... sólo los pasos. Esperemos que apaciguar a la inevitable 'Es todavía bajo NDA' cosa que la gente sigue respondiendo a las preguntas con.)

Marcar

¿Fue útil?

Solución

Lo resuelto. La información está en mi otra pregunta aquí ...

desbordamiento de pila: Reproducción de música iPod mientras recibe eventos de control remoto

... pero la versión corta es que hay que utilizar AVPlayer (pero no AVAudioPlayer. Ni idea de por qué es así!) Con la URL de activos de la MPMediaItem que obtuvo de la biblioteca, a continuación, establecer la categoría de la sesión de audio a reproducibles ( NO permitir que se puede mezclar!) y añadir las teclas correspondientes para su archivo info.plist decirle al sistema operativo de su aplicación quiere soporte de audio de fondo.

Esto le permite reproducir los artículos en su biblioteca del iPod (excepto Audible.com archivos por alguna razón!) Y aún así obtener los eventos remotos. Por supuesto que tiene que hacer más trabajo, y dado que este es el reproductor de audio que está separado de, y se interrumpirá la aplicación iPod (que pueden o no ser deseable. Y una vez más, no se permitirá la mezcla o la aplicación iPod va a secuestrar el remota eventos de control), pero esas son las roturas!

Otros consejos

Para cualquier persona que quiera saber, descubrí para conseguir la reproducción de audio en el fondo, tiene que establecer la categoría de la sesión de audio a jugable y entonces fondo de audio funciona bien. Si también desea reproducir sus propios sonidos al mismo tiempo, tiene que marcar la categoría que se puede mezclar. Que resolvió la parte de música de fondo. Pero lo que he descubierto es, no parece posible en cualquier momento el iPod está jugando para que usted pueda obtener notificaciones remotas.

Aquí está el hilo actualizado ...

Cómo se puede reproducir música desde la aplicación iPod mientras sigue recibiendo remoto eventos de control en su aplicación?

M

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top