在我的应用程序中,我想让用户在后台控制音频播放。我在 .plist 中设置了背景模式,并在 bg 中设置了我想要的播放模式。但是我无法通过触摸控制按钮得到任何响应。
我这样AudioSession
设置
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance]setActive:YES error:nil];
然后,在放置我的播放器的 viewContoller 中,我beginReceivingRemoteControlEvents
喜欢这样
if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
[self becomeFirstResponder];
NSLog(@"Responds!");
}
它打印Responds!
但问题是这个方法永远不会被调用
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
NSLog(@"Where is my event?");
if(event.type == UIEventTypeRemoteControl)
{
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
NSLog(@"Pause");
[self playWords:playButton];
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"Next");
[self next];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
NSLog(@"Prev");
[self prev];
break;
}
}
我什至试图写一个类别UIApplication
让它成为第一响应者,但它没有帮助
@implementation UIApplication (RemoteEvents)
-(BOOL)canBecomeFirstResponder
{
return YES;
}
@end
为什么会发生这种情况?
解决方案 这就是解决我的问题的方法在 iOS4 上进入后台播放音频