В CoreTelephony есть класс CTCallCenter, который включает свойство callEventHandler, которое является блоком, который запускается при изменениях состояния вызова.Как описано в документации, вы можете использовать это, чтобы получать уведомления о следующих состояниях:
CTCallStateDialing;
CTCallStateIncoming;
CTCallStateConnected;
CTCallStateDisconnected;
Документы говорят, что вы должны быть в активном состоянии приложения.Если вы приостановлены, то после пробуждения вы получите только одно уведомление об изменении состояния блока.Если вы взломаны и находитесь в фоновом режиме, надеюсь, вы выполнили свой блок, чтобы вы могли об этом знать.