我正在开发一个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 回答
你是对的 . 使用
MPMusicPlayerController
时,您的iPhone应用程序将无法在后台运行 . 这也会阻止您接收远程控制事件 .如果要播放iPod库中的音频并让应用程序继续在后台运行,则必须使用较低级别的
AVPlayer
类 .