Search code examples
objective-cswiftios10core-telephonycallkit

CTCallCenter is deprecated. What is the alternative?


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?


Solution

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

    "Replaced by <CallKit/CXCallObserver.h>"

    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: