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:
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.
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.
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
Grazie mille per aver postato questo! – genkilabs
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