使用MPMusicPlayer的iPhone App背景

时间:2010-07-20 06:26:03

标签: iphone ios4 mpmusicplayercontroller backgrounding

我正在开发一款iPhone iOS4应用程序,该应用程序包含来自用户iPod库的播放音乐。我还想跟踪已播放的歌曲,并能够随机更改歌曲,即使在后台也是如此。所以我使用以下方式设置音乐播放器:

[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]];

现在,我希望这个应用程序继续在后台运行和播放音乐,所以我设置了:

Required background modes: App plays audio

我遇到的问题是我的应用程序在移动到后台时失去控制权(当调用applicationDidEnterBackground时,即在app开关上)。由于我正在使用iPodMusicPlayer音乐继续播放,但我的应用程序无法控制,因此无法跟踪或更改歌曲。

现在,Apple文档指出应用程序应该继续使用此必需的后台模式标记在后台执行,但我的不会。是因为我正在使用MPMusicPlayer吗?有没有办法绕过它?有什么想法吗?

PS。我也试图让远程锁定和多任务iPod控制器与我的应用程序一起工作。我正在使用下面的代码,但是从不调用remoteControlReceivedWithEvent!它适用于MPMusicPlayer吗?我只用AVAudioPlayer看过它。

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    NSLog(@"remoteControlReceivedWithEvent");
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            NSLog(@"Play Pause");
            break;
        case UIEventSubtypeRemoteControlNextTrack:
            NSLog(@"Next");
            break;
        default:
            break;
    }
}

- (BOOL)canBecomeFirstResponder {
    NSLog(@"canBecomeFirstResponder");
    return YES;
 }

- (void) viewWillAppear:(BOOL)animated{
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

1 个答案:

答案 0 :(得分:5)

你是对的。使用MPMusicPlayerController时,您的iPhone应用无法在后台运行。这也会阻止您接收远程控制事件。

如果您想播放iPod库中的音频并让您的应用继续在后台运行,则必须使用较低级别的AVPlayer课程。