我正在开发一款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];
}
答案 0 :(得分:5)
你是对的。使用MPMusicPlayerController
时,您的iPhone应用无法在后台运行。这也会阻止您接收远程控制事件。
如果您想播放iPod库中的音频并让您的应用继续在后台运行,则必须使用较低级别的AVPlayer
课程。