How to enable iPod controls in the background to control non-iPod music in iOS 4?
A good example of what I'm trying to accomplish is implemented in the latest version of the Spotify iPhone application for (Pandora seems to have the same feature) .
When Spotify is in the background, double tapping opens the "multi-task dock", where the ipod controls (play/pause, forward etc) allow to control the music playback of Spotify (not the ipod application). Also, when the iphone/ipod touch is locked, double tapping displays similar playback controls.
If you don't know what I mean, here's an article that has screenshots : http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/
In my current application, music is streamed from a server (using Matt Gallagher's AudioStreamer). I've managed to keep the music playing in the background. Now, I'd like to link my playback to the "multi-task dock"/lock screen.
Should I be using [MPMusicPlayerController iPodMusicPlayer]
? How shou开发者_运维知识库ld I proceed ?
Bonus question : if you can tell me how to change the ipod icon to my application icon in the "multi-task dock" (Spotify pulled that trick as well...), that whould be AWESOME.
Any help appreciated, thanks.
Problem is solved.
In short, to enable remote control event, 1) use :
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent
and 2) put this is your view controller :
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
I have to give credit to Grant. He has forked Matt Gallagher's AudioStreamer enabling all the ios4 improvements (background audio, and remote controls working). You can find his sources along with a working sample on github : http://github.com/DigitalDJ/AudioStreamer
Regarding the icon : once you use beginReceivingRemoteControlEvents
, the icon automatically switches to your app icon. Brilliant !
Here's the documentation:
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/RemoteControl/RemoteControl.html
Notice however, that it'll work only when you have active audio session in your application.
I'm using it with AVAudioSession
with AVAudioSessionCategoryPlayback
category and AVAudioPlayer
and "remote controls" work only when I have AVAudioSession
active and AVAudioPlayer
object created.
The controls will change for your application if you are using the new background audio api's. Information can be found here. Specifically the sections about background audio.
精彩评论