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 уведомление, когда происходит прерывание, когда приложение находится на переднем плане?

Ответы на вопрос(3)

Ваш ответ на вопрос