Como ativar os controles do iPod em segundo plano para controlar músicas que não são do iPod no iOS 4?

Um bom exemplo do que estou tentando realizar é implementado na versão mais recente do aplicativo Spotify para iPhone (o Pandora parece ter o mesmo recurso).

Quando o Spotify está em segundo plano, o toque duplo abre a “estação multitarefa”, onde os controles do iPod (reproduzir / pausar, encaminhar, etc.) permitem controlar a reprodução de músicas do Spotify (não o aplicativo ipod). Além disso, quando o iphone / ipod touch está bloqueado, o toque duplo exibe controles de reprodução semelhantes.

Se você não sabe o que quero dizer, aqui está um artigo que tem capturas de canvas : http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/

No meu aplicativo atual, a música é transmitida de um servidor (usando o AudioStreamer de Matt Gallagher). Eu consegui manter a música tocando em segundo plano. Agora, gostaria de vincular minha reprodução à canvas “multitarefa” / de bloqueio.

Devo estar usando o [MPMusicPlayerController iPodMusicPlayer] ? Como devo proceder ?

Bônus pergunta: se você pode me dizer como alterar o ícone do iPod para o ícone do meu aplicativo na “doca multi-tarefa” (Spotify puxou esse truque também …), que seria incrível.

Qualquer ajuda apreciada, obrigado.

Problema resolvido.

Em resumo, para habilitar o evento de controle remoto, 1) use:

- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent

e 2) coloque este é o seu controlador de visualização:

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

Eu tenho que dar crédito a Grant. Ele bifurcou o AudioStreamer de Matt Gallagher, permitindo todas as melhorias do ios4 (áudio de fundo e controles remotos funcionando). Você pode encontrar suas fonts junto com uma amostra de trabalho no github: http://github.com/DigitalDJ/AudioStreamer

Em relação ao ícone: quando você usa beginReceivingRemoteControlEvents , o ícone alterna automaticamente para o ícone do aplicativo. Brilhante!

Aqui está a documentação:

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

Observe, no entanto, que ele funcionará somente quando você tiver uma session de áudio ativa em seu aplicativo.

Eu estou usando com AVAudioSession com categoria AVAudioSessionCategoryPlayback e AVAudioPlayer e “controles remotos” funcionam apenas quando eu tenho AVAudioSession ativo e object AVAudioPlayer criado.

Os controles serão alterados para seu aplicativo se você estiver usando as novas APIs de áudio em segundo plano. Informações podem ser encontradas aqui . Especificamente, as seções sobre áudio de fundo.