Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift로 iOS 앱에서 문자 메시지(SMS) 보내는 방법 – MFMessageComposeViewController 완벽 가이드

이 튜토리얼에서는 Swift를 사용해 iOS 애플리케이션 내부에서 문자 메시지를 전송하는 방법을 단계별로 알아봅니다. 앱이 사용자의 휴대폰 번호로 임의로 메시지를 직접 발송할 수는 없지만, MFMessageComposeViewController를 활용하면 미리 작성된 메시지와 수신자 정보를 담은 문자 작성 화면을 띄워 사용자가 이를 확인하고 수정한 뒤 전송하도록 할 수 있습니다.

문자 전송 인터페이스의 동작 원리

iOS에서는 MFMessageComposeViewController 클래스 객체를 사용해 앱 안에서 기본 문자 작성 인터페이스를 표시합니다. 인터페이스를 띄우기 전에 초기 메시지 본문과 수신자 목록을 미리 채워 넣을 수 있으며, 사용자는 이후 자유롭게 수정할 수 있습니다.

다만 주의할 점이 있습니다. 이 작성 인터페이스는 메시지의 실제 전송을 보장하지 않습니다. 단지 초기 메시지를 구성해 사용자 승인을 위해 보여줄 뿐입니다. 사용자가 취소를 선택하면 메시지와 내용은 모두 폐기되고, 전송을 선택한 경우에야 메시지 앱이 실제 발송을 담당하게 됩니다.

프로젝트 구현 단계

1단계: 프로젝트 생성

Xcode를 열고 New Project → Single View Application을 선택한 뒤, 프로젝트 이름을 "MailComposer"로 지정합니다.

2단계: 버튼 추가

Main.storyboard를 열고 버튼을 하나 추가한 후 이름을 "Send Mail"로 지정합니다. 제약 조건(Constraints)으로 "컨테이너 안에서 수평·수직 중앙 정렬"을 적용하고, width = 100pt, height = 50pt로 설정하는 것을 잊지 마세요.

3단계: IBAction 연결

ViewController.swift로 이동해 버튼의 IBAction을 생성하고 이름을 "sendMessage"로 지정합니다.

@IBAction func sendMessage(_ sender: Any) {
}

4단계: 델리게이트 프로토콜 채택

ViewController.swift 상단에 MessageUI 프레임워크를 import하고, ViewController 클래스에 MFMessageComposeViewControllerDelegate 프로토콜을 채택한 뒤 필수 델리게이트 메서드 스텁을 추가합니다.

5단계: 문자 작성 화면 표시 메서드 작성

viewDidLoad 아래에 새로운 메서드 "displayMsgInterface"를 만들고 아래 코드를 붙여넣습니다. 이 메서드는 MFMessageComposeViewController를 표시하고, 미리 입력할 수신자와 메시지 본문을 구성하는 역할을 합니다.

func displayMsgInterface() {
    let messageCompose = MFMessageComposeViewController()
    messageCompose.messageComposeDelegate = self
    // 수신자 설정
    messageCompose.recipients = ["9401234567"]
    // 메시지 본문 설정
    messageCompose.body = "Hey! I just learned how to send message using iOS App."
    // 모달 방식으로 ViewController 표시
    if MFMessageComposeViewController.canSendText() {
        self.present(messageCompose, animated: true, completion: nil)
    } else {
        print("You cannot send messages.")
    }
}

여기서 canSendText() 체크가 중요합니다. 이 검증을 통해 현재 기기가 문자 전송을 지원하는지 확인한 후에만 작성 화면을 띄울 수 있습니다.

6단계: 델리게이트 메서드 구현

사용자가 전송 또는 취소를 마쳤을 때 호출되는 델리게이트 메서드 "didFinishWithResult"에 아래 코드를 추가합니다.

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result:
MessageComposeResult) {
    self.dismiss(animated: true, completion: nil)
}

7단계: 메서드 호출

viewDidLoad에서 "displayMsgInterface" 메서드를 호출합니다. 최종 코드는 아래 이미지와 같아야 합니다.

Swift로 iOS 앱에서 문자 메시지(SMS) 보내는 방법 – MFMessageComposeViewController 완벽 가이드

실행 및 결과 확인

모든 준비가 끝났습니다! 이제 앱을 실행해 보겠습니다.

주의할 점은 시뮬레이터에서는 문자 전송 기능이 지원되지 않으므로, 반드시 실제 기기에서 실행해야 결과를 확인할 수 있다는 것입니다.

Swift로 iOS 앱에서 문자 메시지(SMS) 보내는 방법 – MFMessageComposeViewController 완벽 가이드

Swift로 iOS 앱에서 문자 메시지(SMS) 보내는 방법 – MFMessageComposeViewController 완벽 가이드