8

Ho passato due giorni su questo e non sono andato da nessuna parte. Sto provando a utilizzare [MPMusicPlayerController applicationMusicPlayer] per riprodurre l'audio scelto dalla libreria iPod dell'utente e farlo funzionare in background, oltre a supportare eventi remoti. Adesso fare in modo che la musica suoni effettivamente è la parte facile. Ottieni l'istanza, scegli i brani, assegna la coda di musica e riproduci. Fatto e fatto. MA ... a) Non riesco a farlo suonare in background, e b) anche se in primo piano non riesco a far funzionare gli eventi del telecomando!Supporto audio di sottofondo e controllo remoto con MPMusicPlayerController su iOS 4. È possibile?

E prima che tu chieda, sì, ho impostato le voci plist, la categoria di sessione audio, la chiamata per dire che sono interessato a ricevere eventi remoti e impostare un primo risponditore per ascoltarli, quindi per favore so, si, ho letto ogni singolo documento sull'argomento che ho trovato * (* un compito che incolpo Apple per non essere stato chiaro su questo argomento, né di avere QUALSIASI codice di esempio!) e ho visto ognuno dei video WWDC relativi ad esso (anche congelando lo schermo per copiare il codice esattamente dal loro esempio ...) quindi a meno che non mi sia perso qualcosa non in questa lista, rispondere con una di quelle risposte non sta andando a Aiuto.

Un'altra cosa ... Sto parlando esplicitamente dell'utilizzo di MPMusicPlayerController che, in base ai documenti, non utilizza mai una sessione di applicazione. Utilizza sempre la sessione di sistema. (. Forse che in sé risponde alla mia domanda, ma la documentazione non 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 MPMusicPlayerController, indipendentemente dai metodi che si chiamano o dalle voci plist impostate, l'app non verrà mai eseguita in background. Periodo. Se si utilizza l'istanza ipodMusicPlayer, la musica continua a essere riprodotta, ma è perché è l'iPod in riproduzione, non la tua app. Se invece si utilizza l'istanza applicationMusicPlayer, quando si passa allo sfondo la musica si interrompe. In entrambi i casi, la tua app è sospesa.

  2. A prescindere dall'utilizzo delle istanze ipodMusicPlayer o applicationMusicPlayer, tutti gli eventi remoti vengono indirizzati all'applicazione iPod stessa, non ai tuoi, anche se li hai esplicitamente richiesti. Se si utilizza l'istanza applicationMusicPlayer e si utilizza il telecomando per selezionare "Riproduci", l'app iPod riceve il comando in modo che l'audio si abbandoni e venga interrotto e la riproduzione inizi nell'app iPod. Se invece hai scelto ipodMusicPlayer, ovviamente non importa come hai detto esplicitamente che sei fondamentalmente interessato solo a controllare da remoto l'app iPod che, di nuovo, è ciò che effettivamente riceve gli eventi remoti.

  3. L'icona nei comandi di avviamento rapido in basso non cambia mai all'icona della tua app perché, di nuovo, l'app non viene mai impostata per ricevere gli eventi. L'applicazione iPod è, ed è per questo che la sua icona appare lì.

Quindi quello che voglio sapere è ... ho sbagliato qui? Qualcuno è riuscito a utilizzare con successo MPMusicPlayerController ed è stato in grado di intercettare gli eventi remoti? Mentre preferirei usare applicationMusicPlayer con il supporto per la musica di sottofondo, quindi non muoio con l'iPod dell'utente, la cosa più grande sono le notifiche del telecomando, cioè se devo usare ipodMusicControl e tenere la mia app in primo piano per intercettare quelle messaggi, così sia. È brutto in quel modo, ma almeno è qualcosa.

Gli esempi di codice o almeno i passaggi espliciti contro uno dei modelli di app incorporati potrebbero essere GRAZIE apprezzati. (Non serve nemmeno l'implementazione ... solo i passaggi. Speriamo che si possa placare l'inevitabile "E 'ancora sotto la NDA" cosa che la gente continua a rispondere alle domande.)

Mark

risposta

8

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

Stack Overflow: Play iPod music while receiving remote control events

... ma la versione breve è che devi usare AVPlayer (ma non AVAudioPlayer. Nessuna idea perché che è!) Con l'URL di asset da MPMediaItem hai ottenuto dalla libreria, quindi imposta la categoria della sessione audio su Riproducibile (NON abilitare il mixable!) e aggiungi le chiavi appropriate al tuo file info.plist che indica al sistema operativo che l'app desidera supportare l'audio in background.

Ciò consente di riprodurre elementi dalla libreria di iPod (ad eccezione dei file Audible.com per qualche motivo!) E ottenere comunque eventi remoti. Certo, devi fare più lavoro, e dal momento che questo è il tuo lettore audio che è separato da, e interromperà l'app iPod (che potrebbe essere o non essere desiderabile.) E ancora, non abilitare il mixaggio o l'app di iPod dirottare il eventi di controllo remoto) ma quelli sono le interruzioni!

+0

Grazie mille per aver postato questo! – genkilabs

+0

Nessun problema. Davvero frustrante che Apple non fosse più chiara su quello che stava succedendo lì. Ancora più frustrante (anche se comprensibile per le ragioni del DRM) è che non è possibile eseguire i file Audible in questo modo, il che ha rovinato la nostra app dal momento che era l'obiettivo principale. Cosa puoi fare! Comunque, felice che questo abbia aiutato. – MarqueIV

2

Per chi vuole sapere, ho scoperto per ottenere l'riprodurre file audio in background, è necessario impostare categoria della sessione audio riproducibili e quindi audio di sottofondo funziona bene. Se vuoi anche suonare i tuoi suoni allo stesso tempo, devi contrassegnare la categoria come mixable. Questo ha risolto la parte musicale di sottofondo. Ma quello che ho scoperto è che ogni volta che l'iPod è in riproduzione, non sembra possibile ricevere notifiche remote.

Ecco il filo aggiornato ...

How can you play music from the iPod app while still receiving remote control events in your app?

M

+0

Come sta facendo questo ragazzo ??? Ugh !!! http://www.engadget.com/2010/07/08/ios-4-adds-direct-access-to-itunes-library-iphone-dj-apps-about/ – MarqueIV

+0

Ciao, come si registra l'audio nel sfondo? – Namratha