Даже при использовании AVAudioPlayer вы можете инициализировать аудиосеанс, где вы можете указать тип воспроизведения (или записи, если на то пошло), который вы будете выполнять, и обратный вызов для обработки прерываний, таких как телефонные звонки.
Посмотрите на AudioSessionInitialize()
и его третий параметр, функцию обратного вызова для обработки прерываний. В вашем обратном вызове вы можете обрабатывать как начало, так и конец прерывания.
Существенное отличие здесь между использованием AudioSession и использованием обратных вызовов AVAudioPlayer состоит в том, что первый происходит на более низком уровне, возможно, перед вызовом методов делегата последнего. Так что с обратным вызовом AudioSession у вас есть более точное управление, я думаю, но тогда вам придется делать больше, возможно, в зависимости от сложности настройки аудио вашего приложения.