Even when using AVAudioPlayer, you can initialize an audio session, where you can specify the type of playback (or recording, for that matter), you will make a callback to handle interruptions, such as phone calls.
See AudioSessionInitialize() and the third parameter is a callback function for handling interrupts. In your callback, you can handle both the beginning and the end of the interrupt.
The difference here from using AudioSession and using AVAudioPlayer callbacks is that the former happens at a lower level, perhaps before the last delegate methods are called. So with AudioSession callback you have finer control, I think, but then you need to do more, possibly depending on the complexity of setting up the audio application.
source share