Если ваше приложение работает во время вызова, проверьте CoreTelephony Framework . Класс CTCall
предоставляет информацию о состоянии вызова. Я не использовал это сам, но вы можете найти это полезным.
extern NSString const *CTCallStateDialing;
extern NSString const *CTCallStateIncoming;
extern NSString const *CTCallStateConnected;
extern NSString const *CTCallStateDisconnected;
Edit:
CTCallCenter
позволяет регистрироваться для изменения состояния события вызова. Как я уже говорил, ваше приложение должно быть запущено, чтобы знать, что что-то изменилось. Вы можете запросить максимальное время фоновой обработки (я думаю, что сейчас оно составляет 10 минут), когда ваше приложение перемещается в фоновый режим. Эти API доступны только в iOS 4.0 и более поздних версиях.