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