Я хочу знать, когда мой AVAudioRecorder
недоступен (например, когда музыка начинает воспроизводиться).
Поскольку audioRecorderEndInterruption
будет устаревшим с iOS 9, я сосредоточен на уведомлении прерывания AVAudioSession
(но ни один из них не работает как ожидалось).
Проблема в том, что уведомление о прерывании никогда не вызывается, если приложение было и остается на переднем плане, когда происходит прерывание.
Например: пользователь запускает и останавливает воспроизведение музыки, не перемещая приложение в фоновом режиме.
Чтобы обнаружить любые прерывания, которые я использую:
[[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
, когда прерывание происходит, когда приложение находится на переднем плане?