[swift] CoreTelephony를 활용한 통화 종료 원인 정보 확인 방법

iOS 앱을 개발하다보면 통화 종료 원인을 확인해야 할 때가 있습니다. CoreTelephony 프레임워크를 사용하면 통화 종료와 관련된 정보를 얻을 수 있습니다. 이 포스트에서는 CoreTelephony를 사용하여 통화 종료 원인을 확인하는 방법에 대해 알아보겠습니다.

CoreTelephony 소개

CoreTelephony는 iOS에서 통신 네트워크와 관련된 정보를 제공하는 프레임워크입니다. 이를 통해 현재 통화 상태 및 통화 이벤트에 대한 정보를 받아올 수 있습니다.

통화 종료 원인 확인하기

CoreTelephony를 사용하여 통화 종료 원인을 확인하려면 다음과 같이 작업할 수 있습니다.

import CoreTelephony

class CallDelegate: NSObject, CXCallObserverDelegate {
    let callObserver = CXCallObserver()

    override init() {
        super.init()
        callObserver.setDelegate(self, queue: nil)
    }

    func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        if !call.hasConnected { // 통화가 연결되지 않은 경우
            if call.hasEnded { // 통화가 종료된 경우
                let endReason = call.endReason
                switch endReason {
                    case .unanswered:
                        print("통화 미응답")
                    case .failed:
                        print("통화 실패")
                    case .answeredElsewhere:
                        print("다른 곳에서 통화함")
                    default:
                        print("그 외 종료 원인")
                }
            }
        }
    }
}

위 예시에서는 CXCallObserver를 사용하여 통화 이벤트를 감지하고, callChanged 메소드에서 통화가 종료되었을 때 endReason 속성을 통해 종료 원인을 확인합니다.

결론

CoreTelephony를 사용하면 통화 종료와 관련된 정보를 쉽게 확인할 수 있습니다. 위의 예시를 참고하여 만약 앱이 통화 관련 이벤트를 필요로 한다면 CoreTelephony 프레임워크를 활용하여 원하는 정보를 얻을 수 있습니다.