CTCallCenter is deprecated. What is the alternative?

i0S Swift Issue

Question or problem in the Swift programming language:

I am using CTCallCenter in my project. Now it’s deprecated, I would like to know what are alternatives? How to get the event for the voice call?

How to solve the problem:

This is poorly documented, but I’ve found this mention in CTCallCenter public header files:


“Replaced by ”

So, from iOS 10 you should use CXCallObserver class of new CallKit framework to retrieve info about active calls:

CXCallObserver *callObserver = [[CXCallObserver alloc] init]; 

Provide object, conforming to CXCallObserverDelegate protocol and queue, on which you want to perform delegate callbacks:

// If queue is nil, then callbacks will be performed on main queue [callObserver setDelegate:self queue:nil]; // Don't forget to store reference to callObserver, to prevent it from being released self.callObserver = callObserver; 

and implement the following method on your delegate object:

- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call { if (call.hasConnected) { // perform necessary actions } } 

For more information, you can check:

  • Enhancing VoIP Apps with CallKit session from WWDC 2016
  • Speakerbox sample project

Hope this helps!