Итак, в моем приложении, работающем на iOS 6, все, кажется, отлично работает с аудио. Я использую старый формат API C, чтобы перехватывать прерывания с помощью обратного вызова; настройка через: AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self)
, и это было здорово. Однако, используя SDK iOS 7, кажется, что мой обратный вызов прерывания никогда не вызывается, когда устройство принимает вызовы или отключается сигнализация.
После некоторого оглядки, я слышал, что старые C api устарели и что вы должны перейти к новым функциям AVAudioSession. Больше чтения показало, что делегат AVAudioSession устарел и что вы должны использовать NSNotification
для AVAudioSessionInterruptionNotification
, чтобы перехватывать прерывания и делать все, что нужно сделать.
Для меня кажется, что это уведомление никогда не срабатывает, и поэтому я никогда не получаю должным образом прерывание, которое затем прерывает все мои аудиоматериалы после завершения вызова.
Я зарегистрирую уведомление так:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];
Теперь функция AudioInterruption:
просто записывает, что она была запущена. Ни журнал, ни точки останова не запускаются.
Чтобы быть понятным, изначально воспроизведение и запись звука прекрасны. Когда происходит прерывание (например, входящий вызов или сигнал тревоги), уведомление об отключении не запускается. Если вам нужен более окружающий код, сообщите мне.