如何在后台启用iPod控件来控制iOS 4中的非iPod音乐?

时间:2010-07-07 15:34:29

标签: iphone audio ios4 ipod mpmusicplayercontroller

我想要完成的一个很好的例子是在 Spotify iPhone应用程序的最新版本中实现的(Pandora似乎具有相同的功能)。

当Spotify在后台时,双击会打开“多任务停靠”,其中ipod控件(播放/暂停,转发等)允许控制Spotify(而不是ipod应用程序)的音乐播放。此外,当iphone / ipod touch被锁定时,双击会显示类似的播放控件。

如果你不知道我的意思,这篇文章有截图http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/

在我目前的应用程序中,音乐是从服务器流式传输的(使用Matt Gallagher的AudioStreamer)。我设法让音乐在后台播放。现在,我想将我的播放链接到“多任务停靠”/锁定屏幕。

我应该使用[MPMusicPlayerController iPodMusicPlayer]吗?我该怎么办?

奖金问题:如果你能告诉我如何在“多任务停靠”中将ipod图标更改为我的应用程序图标(Spotify也提取了这个技巧......),这真是太棒了。

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:31)

问题解决了。

简而言之,要启用远程控制事件,1)使用:

- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent

和2)把它作为你的视图控制器:

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

我必须赞扬格兰特。他将Matt Gallagher的AudioStreamer分叉,支持所有ios4改进(背景音频和遥控器工作)。你可以在github上找到他的资源以及一个工作样本:http://github.com/DigitalDJ/AudioStreamer

关于图标:使用beginReceivingRemoteControlEvents后,图标会自动切换到您的应用图标。太棒了!

答案 1 :(得分:2)

这是文档:

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

但请注意,只有在应用程序中有活动的音频会话时它才会起作用。

我正在AVAudioSession使用AVAudioSessionCategoryPlayback类别,而AVAudioPlayer和“遥控器”仅在AVAudioSession有效AVAudioPlayer个对象时才能使用创建。

答案 2 :(得分:1)

如果您使用新的背景音频api,控件将根据您的应用进行更改。可以找到信息here。特别是有关背景音频的部分。