Я хочу знать, когда мой AVAudioRecorder
недоступен (например, когда музыка начинает воспроизводиться).Уведомление о прерывании IOS AVAudioSession не работает должным образом
Как audioRecorderEndInterruption
будет устаревшим с iOS 9 Я сосредотачиваюсь на уведомлении об отключении AVAudioSession
(но не работает должным образом).
Проблема в том, что уведомление о прерывании никогда не вызывается, если приложение было и остается на переднем плане, когда происходит прерывание.
E.g: Пользователь запускает и останавливает воспроизведение музыки, не перемещая приложение в фоновом режиме.
Для обнаружения каких-либо перерывов я использую:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionWasInterrupted:) name:AVAudioSessionInterruptionNotification object:nil];
...
- (void)audioSessionWasInterrupted:(NSNotification *)notification {
if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) {
NSLog(@"Interruption notification");
if ([[notification.userInfo valueForKey:AVAudioSessionInterruptionTypeKey] isEqualToNumber:[NSNumber numberWithInt:AVAudioSessionInterruptionTypeBegan]]) {
NSLog(@"InterruptionTypeBegan");
} else {
NSLog(@"InterruptionTypeEnded");
}
}
}
я InterruptionTypeBegan
, как и ожидалось, но InterruptionTypeEnded
не вызывается, если приложение все еще находится на переднем плане (то есть он не будет называться, пока приложение помещается в фоновом режиме и обратно на передний план).
Как я могу получить уведомление InterruptionTypeEnded
, когда прерывание происходит, когда приложение находится на переднем плане?
Эта ссылка может вам помочь: - http://stackoverflow.com/questions/23586056/audio-interruption-when-ios-application-is-recording-in-background –
Из документации на яблоко: «Нет гарантии что начало прерывания будет иметь прерывание. Ваше приложение должно быть в курсе перехода в состояние запуска переднего плана или пользователя, нажимая кнопку воспроизведения. В любом случае определите, должно ли ваше приложение повторно активировать аудио сессию ». – Fennelouski