Desidero sapere quando il mio AVAudioRecorder
non è accessibile (ad esempio, quando la musica inizia a suonare).Notifica di interruzione AVAudioSession iOS non funzionante come previsto
Come audioRecorderEndInterruption
sarà deprecato con iOS 9 Mi sto concentrando sulla notifica di interruzione di AVAudioSession
(ma nessuno dei due funziona come previsto).
Il problema è che la notifica di interruzione non viene mai chiamata se l'app era e rimane in primo piano quando si verifica l'interruzione.
E.g: l'utente avvia e interrompe la riproduzione della musica senza spostare l'applicazione in background.
per rilevare eventuali interruzioni che sto 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");
}
}
}
ottengo InterruptionTypeBegan
come previsto, ma InterruptionTypeEnded
non viene chiamato se l'applicazione è ancora in primo piano (il che significa che non sarà chiamato fino a quando l'applicazione è posto sullo sfondo e torna in primo piano).
Come posso ricevere la notifica InterruptionTypeEnded
quando l'interruzione si verifica mentre l'app è in primo piano?
Questo collegamento può aiutare: - http://stackoverflow.com/questions/23586056/audio-interruzione-quando-ios-application-is-recording-in-background –
Dalla documentazione della mela: "Non c'è garanzia che l'interruzione di avvio avrà un'interruzione di fine. L'app deve essere consapevole del passaggio a uno stato di esecuzione in primo piano o all'utente che preme un pulsante di riproduzione. In entrambi i casi, determinare se l'app deve riattivare la propria sessione audio. " – Fennelouski