이번 글에서는 Swift를 사용해 iOS 앱에서 프로그래밍 방식으로 전화를 거는 방법을 단계별로 알아보겠습니다. 생각보다 간단한 코드 몇 줄만으로 통화 기능을 구현할 수 있으니, 차근차근 따라와 보세요.
프로젝트 설정하기
1단계 – 새 프로젝트 생성
Xcode를 실행하고 New Project → Single View Application을 선택한 뒤, 프로젝트 이름을 "MakeCall"로 지정합니다.
2단계 – UI 구성
Main.storyboard 파일을 열고 아래 이미지처럼 텍스트 필드 하나와 버튼 하나를 화면에 배치합니다. 텍스트 필드에는 전화번호를 입력하고, 버튼을 눌러 통화를 시작하는 구조입니다.

코드 연결하기
3단계 – IBOutlet 생성
텍스트 필드에 대한 @IBOutlet을 생성하고 이름을 phoneNumberTextfield로 지정합니다.
4단계 – IBAction 생성
통화 버튼에 대한 @IBAction 메서드 callButtonClicked를 생성합니다.
5단계 – 전화 걸기 코드 작성
iOS에서 전화를 걸 때는 openURL 메서드를 활용할 수 있습니다. callButtonClicked 메서드 안에 아래 코드를 추가하세요.
if let url = URL(string: "tel://\(phoneNumberTextfield.text!)"),
UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
이 코드는 먼저 canOpenURL로 해당 URL(전화 스킴)을 열 수 있는지 확인한 후, 가능하면 실제로 전화 앱을 호출합니다. 잘못된 번호 형식이나 지원하지 않는 기기에서의 오류를 방지할 수 있어 안전한 방식입니다.
앱 실행 및 테스트
6단계 – 번호 입력
앱을 실행하고 아래 사진처럼 통화를 걸고 싶은 전화번호를 텍스트 필드에 입력합니다.

7단계 – 확인 알림창 표시
통화 버튼을 클릭하면 '통화(Call)'와 '취소(Cancel)' 옵션이 포함된 알림창이 나타납니다. 사용자가 실수로 통화를 거는 것을 막아주는 안전장치입니다.

8단계 – 통화 연결
알림창에서 통화 버튼을 다시 누르면 입력한 번호로 실제 전화가 걸리게 됩니다.

마무리
이렇게 tel:// 스킴과 openURL 메서드만 활용하면 별도의 외부 라이브러리 없이도 iOS 앱에서 간편하게 전화 걸기 기능을 구현할 수 있습니다. 참고로 이 기능은 시뮬레이터에서는 동작하지 않으므로, 반드시 실제 iPhone 기기에서 테스트해야 한다는 점을 기억하세요.