[iOS] CallKit Simulator error

2025. 1. 21. 21:16iOS

반응형

Call Directory Fail 오류는 iOS 시뮬레이터에서 CallKit의 Call Directory Extension을 실행하려고 할 때 발생하는 일반적인 문제입니다. 시뮬레이터는 실제 전화를 걸거나 Call Directory Extension을 완전히 지원하지 않기 때문에 이 오류가 발생합니다. 아래에서 문제를 해결하거나 원인을 분석할 수 있는 몇 가지 방법을 안내드립니다.


1. 실제 디바이스에서 실행 확인

Call Directory Extension은 실제 디바이스에서만 제대로 작동합니다. 이 기능은 전화 앱과 깊이 통합되어 있어, 시뮬레이터에서는 테스트할 수 없습니다.

  • 해결 방법:
    • iPhone 디바이스를 연결하고, 해당 디바이스에서 앱을 실행하세요.

2. CallKit 권한 확인

실제 디바이스에서 테스트 중이라면, CallKit 권한 문제일 가능성도 있습니다. Call Directory Extension은 사용자의 동의를 필요로 하며, 설정에서 확장이 활성화되어야 작동합니다.

  • 확인 방법:
    1. 디바이스 설정 → 전화 → "차단 및 발신자 확인" 메뉴로 이동하세요.
    2. Call Directory Extension이 목록에 표시되며, 활성화되어 있어야 합니다.

3. Call Directory Extension 업데이트 요청

CallDirectoryManager의 reloadExtension(withIdentifier:completionHandler:) 메서드를 호출할 때 발생한 문제일 수 있습니다.

  • 확인 및 코드 점검:
    아래 코드를 사용하여 오류가 발생한 시점을 디버깅하세요.
import CallKit 

let manager = CXCallDirectoryManager.sharedInstance 
manager.reloadExtension(withIdentifier: "com.your.bundle.id") { error in 
	if let error = error { 
    		print("Failed to reload Call Directory: \(error.localizedDescription)") 
    } else { 
    	print("Call Directory reloaded successfully.") 
    }
}
  • 오류 출력 확인:
    error.localizedDescription을 출력하여 구체적인 원인을 확인하세요.

4. 번들 ID 및 설정 확인

Call Directory Extension의 번들 ID가 메인 앱의 번들 ID와 정확히 일치하는지 확인해야 합니다.

  • 확인할 사항:
    • App 및 Call Directory Extension의 Team ID와 번들 ID가 일치하는지 확인하세요.
    • Entitlements 파일에 com.apple.developer.callkit.call-directory 권한이 포함되어 있는지 확인하세요.

5. 시뮬레이터 환경 제한

시뮬레이터에서 실행 중이라면, 위 문제를 무시하고 다음과 같이 동작 여부만 확인하세요.

  • Debug 환경에서 출력 확인:
    시뮬레이터에서 CallKit은 동작하지 않으므로 실제 동작은 무시하고 completionHandler에만 로그를 출력하세요.

요약

  • 시뮬레이터에서는 CallKit과 관련된 확장 프로그램을 테스트할 수 없습니다.
  • 실제 디바이스에서 실행하고, 권한 및 설정이 올바른지 확인하세요.
  • 번들 ID, Team ID, 권한 설정이 정확한지 점검하세요.
  • 로그를 활용하여 reloadExtension 호출의 구체적인 오류를 확인하세요.
반응형