Come abilitare i controlli iPod in background per controllare la musica non iPod in iOS 4?

Un buon esempio di ciò che sto cercando di realizzare è implementato nell’ultima versione dell’applicazione Spotify per iPhone (Pandora sembra avere la stessa funzionalità).

Quando Spotify è in background, toccando due volte si apre il “dock multi-task”, in cui i controlli ipod (riproduzione / pausa, inoltro, ecc.) Consentono di controllare la riproduzione musicale di Spotify (non l’applicazione ipod). Inoltre, quando iphone / ipod touch è bloccato, il doppio touch visualizza controlli di riproduzione simili.

Se non sai cosa intendo, ecco un articolo con screenshot : http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/

Nella mia attuale applicazione, la musica viene trasmessa da un server (usando AudioStreamer di Matt Gallagher). Sono riuscito a mantenere la musica in sottofondo. Ora, vorrei colbind la mia riproduzione alla “schermata di blocco multi-task” / blocco.

Dovrei usare [MPMusicPlayerController iPodMusicPlayer] ? Come dovrei procedere?

Domanda bonus: se puoi dirmi come cambiare l’icona ipod sull’icona della mia applicazione nel “dock multi-task” (anche Spotify ha tirato fuori quel trucco …), che sarebbe FANTASTICO.

Qualsiasi aiuto apprezzato, grazie.

Problema risolto.

In breve, per abilitare l’evento di controllo remoto, 1) utilizzare:

- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent

e 2) metti questo è il tuo controller di visualizzazione:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [self becomeFirstResponder]; } - (BOOL)canBecomeFirstResponder { return YES; } 

Devo dare credito a Grant. Ha biforcato AudioStreamer di Matt Gallagher abilitando tutti i miglioramenti di ios4 (audio di sottofondo e comandi remoti funzionanti). Puoi trovare le sue fonti insieme a un campione funzionante su github: http://github.com/DigitalDJ/AudioStreamer

Riguardo all’icona: una volta che usi beginReceivingRemoteControlEvents , l’icona passa automaticamente all’icona della tua app. Geniale!

Ecco la documentazione:

http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/RemoteControl/RemoteControl.html

Si noti tuttavia che funzionerà solo quando si ha una sessione audio triggers nella propria applicazione.

Lo sto utilizzando con AVAudioSession con categoria AVAudioSessionCategoryPlayback e AVAudioPlayer e “remote control” funzionano solo quando sono stati AVAudioSession AVAudioPlayer e AVAudioPlayer object AVAudioPlayer .

I controlli cambieranno per la tua applicazione se utilizzi le nuove API audio di sfondo. Le informazioni possono essere trovate qui . Specificamente le sezioni relative all’audio di sottofondo.