Background Audio e Supporto remoto di controllo utilizzando MPMusicPlayerController su iOS 4. Questo è anche possibile?

StackOverflow https://stackoverflow.com/questions/3175974

Domanda

Ho trascorso due giorni su questo e sono arrivato da nessuna parte. Sto cercando di utilizzare [MPMusicPlayerController applicationMusicPlayer] per riprodurre l'audio scelti dalla libreria iPod dell'utente e farlo funzionare in background, così come supporto eventi remoti. Ora ottenere la musica in realtà la riproduzione è la parte facile. Prendi il caso, scegliere le canzoni, assegnare la coda di musica e giocare. Fatto e fatto. MA ... a) non riesco a farlo per giocare in background, e b) anche quando in primo piano, non posso ottenere gli eventi di controllo remoto per lavoro a tutti!

E prima di chiedere, sì, ho impostato le voci plist, la categoria sessione audio, la chiamata a dire che sono interessati a ottenere eventi remoti e impostare un risponditore prima di ascoltare per loro, quindi per favore so, sì , ho letto letto ogni singolo documento sul tema che ho potuto trovare * (* un compito che la colpa di Apple per per non essere chiaro a tutti su questo argomento, non avendo alcun codice di esempio per questo!) e ho guardato ogni uno dei video WWDC che lo riguardano (anche il congelamento dello schermo per copiare il codice esattamente dal loro esempio ...) quindi a meno che ho perso qualcosa non in questo elenco , rispondendo con una qualsiasi di queste risposte non ha intenzione di aiutare.

Ancora una cosa ... Io sono esplicitamente parlando utilizzando la MPMusicPlayerController che secondo la documentazione, non usa mai una sessione di applicazione. Si utilizza sempre la sessione del sistema. (Forse che in sé risponde alla mia domanda, ma la documentazione non lo fanno chiaramente dire che quindi non sono sicuro che, da qui a questa domanda.)

Detto questo, dopo due giorni, i miei pensieri sono questo:

  1. Quando si utilizza il MPMusicPlayerController, indipendentemente da quello metodi si chiama o quali voci plist impostate, la vostra applicazione sarà mai eseguito in background. Periodo. Se si utilizza l'istanza ipodMusicPlayer, la musica continua a suonare, ma questo è perché è l'iPod che sta giocando, non la vostra applicazione. Se si utilizza l'istanza applicationMusicPlayer invece, quando si va al fondo la vostra musica si ferma. In entrambi i casi, la vostra applicazione è sospesa.

  2. Indipendentemente dal tipo di utilizzo delle istanze ipodMusicPlayer o applicationMusicPlayer, tutti gli eventi remoti andare all'applicazione iPod stesso, non la tua, anche se hai esplicitamente chiesto per loro. Se si utilizza l'istanza applicationMusicPlayer e si utilizza il telecomando per selezionare 'Play', l'applicazione iPod riceve il comando in modo che le anatre audio out e si interrompe e la riproduzione inizia nella applicazione iPod. Se hai scelto l'ipodMusicPlayer invece, poi, naturalmente, non importa come hai esplicitamente detto che stai fondamentalmente solo interessati a controllare da remoto l'applicazione iPod che ancora una volta, è quello che in realtà riceve gli eventi remoti.

  3. L'icona nei controlli rapido-switch in fondo non cambia mai per sull'icona dell'applicazione perché ancora una volta, la vostra applicazione non è mai in realtà configurato per ricevere gli eventi. L'applicazione iPod è, motivo per cui la sua icona viene visualizzata qui.

Quindi quello che voglio sapere è ... mi sbaglio qui? Qualcuno ha avuto successo in grado di utilizzare MPMusicPlayerController e stato in grado di intercettare gli eventi remoti? Mentre io preferisco usare l'applicationMusicPlayer con il supporto di musica di sottofondo in modo da non muck con l'iPod dell'utente, la cosa più grande è notifiche di controllo remoto, che significa se devo usare l'ipodMusicControl e mantenere la mia app in primo piano per intercettare quelle messaggi, così sia. E 'brutto in quel modo, ma almeno è qualcosa.

Gli esempi di codice, o almeno passaggi espliciti contro uno dei modelli incorporati app NOTEVOLMENTE sarebbe apprezzato. (Non è nemmeno necessario l'attuazione ... solo i passi. Speriamo che placare l'inevitabile 'E' ancora sotto NDA' cosa che la gente continua a rispondere alle domande con.)

Mark

È stato utile?

Soluzione

ho risolto. Le informazioni è nella mia altra questione qui ...

Stack Overflow: Gioca la musica di iPod durante la ricezione di eventi di controllo remoto

... ma la versione breve è che devi usare AVPlayer (ma non AVAudioPlayer. Nessuna idea perché che è!) Con l'URL di asset dal MPMediaItem avete ottenuto dalla libreria, quindi impostare categoria della sessione audio riproducibili ( NON consentire miscelabili!) e aggiungere i tasti appropriati per il file Info.plist dire il sistema operativo la vostra applicazione vuole il supporto audio di sottofondo.

Questo ti permette di riprodurre gli elementi dalla libreria iPod (tranne Audible.com file per qualche motivo!) E ancora ottenere eventi remoti. Certo che devi fare più lavoro, e dal momento che questo è il vostro lettore audio che è separata dal, e interromperà l'applicazione iPod (che può o non può essere desiderabile. E ancora, non attivare la miscelazione o l'iPod App dirottare il remota eventi di controllo), ma queste sono le pause!

Altri suggerimenti

Per chi vuole sapere, ho scoperto che per ottenere l'riprodurre file audio in background, è necessario impostare categoria della sessione audio riproducibili e quindi audio di sottofondo funziona bene. Se anche voi volete riprodurre i propri suoni, allo stesso tempo, è necessario evidenziare la categoria come miscelabili. Che ha risolto la parte musica di sottofondo. Ma quello che ho scoperto è qualsiasi momento l'iPod è in riproduzione, non sembra possibile per voi per ottenere le notifiche remote.

Ecco il filo aggiornato ...

Come è possibile riprodurre musica da iPod app mentre ancora la ricezione remota eventi di controllo della tua app?

M

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top