A notificação de interrupção do iOS AVAudioSession não está funcionando conforme o esperado
Eu quero saber quando meuAVAudioRecorder
está inacessível (por exemplo, quando a música começa a tocar).
ComoaudioRecorderEndInterruption
será descontinuado com o iOS 9 em que estou focandoAVAudioSession
notificação de interrupção (mas nenhuma está funcionando conforme o esperado).
O problema é que a notificação de interrupção nunca é chamada se o aplicativo estava e permanece em primeiro plano quando a interrupção ocorre.
Por exemplo: o usuário inicia e para a reprodução de música sem mover o aplicativo para o segundo plano.
Para detectar quaisquer interrupções que estou usando:
[[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");
}
}
}
eu receboInterruptionTypeBegan
como esperado, masInterruptionTypeEnded
não é chamado se o aplicativo ainda estiver em primeiro plano (ou seja, ele não será chamado até que o aplicativo seja colocado em segundo plano e retorne ao primeiro plano).
Como posso receberInterruptionTypeEnded
notificação quando a interrupção ocorre enquanto o aplicativo está em primeiro plano?