Chcę wiedzieć, kiedy moja AVAudioRecorder
jest niedostępna (np. Po rozpoczęciu odtwarzania muzyki).Powiadomienie o przerwaniu AVAudioSession dla iOS nie działa zgodnie z oczekiwaniami
Jako audioRecorderEndInterruption
będzie nieaktualne z iOS 9 Mam skupienie na powiadomieniu o przerwaniu AVAudioSession
(ale żaden nie działa zgodnie z oczekiwaniami).
Problem polega na tym, że powiadomienie o przerwaniu nigdy nie jest wywoływane, jeśli aplikacja była i pozostaje na pierwszym planie w momencie wystąpienia przerwy.
E.g: Użytkownik uruchamia i zatrzymuje odtwarzanie muzyki bez przenoszenia aplikacji w tło.
Aby wykryć żadnych przerw używam:
[[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");
}
}
}
uzyskać InterruptionTypeBegan
zgodnie z oczekiwaniami, ale InterruptionTypeEnded
nie jest wywoływana gdy aplikacja jest nadal na pierwszym planie (co oznacza, że nie będzie się do aplikacji jest umieszczony w tle i z powrotem na pierwszym planie).
Jak mogę otrzymać powiadomienie InterruptionTypeEnded
, gdy przerwa wystąpi, gdy aplikacja znajduje się na pierwszym planie?
Ten link może pomóc: - http://stackoverflow.com/questions/23586056/audio-interruption-when-ios-application-is-re-ording-inbackback –
Z dokumentacji Apple: "Nie ma żadnej gwarancji że przerwa w rozpoczęciu będzie miała przerwę w końcowej fazie, Twoja aplikacja musi być świadoma przejścia na pierwszy plan lub naciśnięcia przycisku odtwarzania. W obu przypadkach sprawdź, czy Twoja aplikacja powinna ponownie aktywować sesję audio. " – Fennelouski