В своем приложении я хочу, чтобы пользователь мог управлять воспроизведением звука в фоновом режиме. Я установил фоновые режимы в.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 для воспроизведения звука