[swift] CallKit과 통화 연결(connect) 설정

iOS 앱을 개발하다 보면 시스템 통화 화면을 사용해야 하는 경우가 있습니다. CallKit은 VoIP(Voice over Internet Protocol) 앱에서 통화 화면을 표시하기 위한 프레임워크입니다.

CallKit 프레임워크 통화 관리

CallKit은 애플의 표준 인터페이스 및 사용자 경험을 제공하여, iOS 기기의 통화 관리 시스템과 통합할 수 있습니다. 개발자는 CallKit을 사용하여 애플리케이션 내에서 통화 관리(통화 연결, 종료, 거부)를 할 수 있습니다.

CallKit을 통한 통화 연결 설정

CallKit을 사용하여 통화 연결을 설정하는 과정은 다음과 같습니다.

  1. Call Directory Extension 세팅: 우선 CallKit을 이용해 통화 연결을 설정하려면 Call Directory Extension이 필요합니다. Call Directory Extension을 생성하고, 앱에 추가해야 합니다.

     import CallKit
    
     class CallDirectoryHandler: CXCallDirectoryProvider {
         override func beginRequest(with context: CXCallDirectoryExtensionContext) {
             // Implement call directory functionality
         }
     }
    
  2. Caller ID 등록: CallKit을 통해 전화받을 때의 Caller ID를 등록해야 합니다. Call Directory Extension 메서드를 사용하여 등록할 수 있습니다.

     func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
         let numbers = ["1234567890"]
         for number in numbers {
             let phone = CXCallDirectoryPhoneNumber(number)
             context.addIdentificationEntry(withNextSequentialPhoneNumber: phone, label: "Example Company")
         }
     }
    
  3. 통화 연결 요청: 사용자가 전화 걸기를 시도하면 CallKit을 이용해 통화 연결을 설정할 수 있습니다.

     func startCall(with handle: CXHandle, completion: ((CXStartCallAction) -> Void)?) {
         let callHandle = CXHandle(type: .phoneNumber, value: handle)
         let startCallAction = CXStartCallAction(call: UUID(), handle: callHandle)
         completion?(startCallAction)
     }
    

CallKit을 이용하면 iOS 앱에서 시스템 통화 화면을 세밀하게 제어할 수 있습니다. 통화 화면에 사전에 설정한 Caller ID가 표시되어 사용자는 더 나은 통화 경험을 할 수 있습니다.


참고 자료: