티스토리 뷰

프로젝트에 메일이나 메시지를 보내는 방법을 소개드리려 합니다.

사용할 프레임워크는 MessageUI프레임워크입니다.

resource: https://developer.apple.com/documentation/messageui

유저가 앱을 떠나지 않고 메시지를 편집하고 보낼 수 있도록 이메일 및 문자 메시지를 작성하기 위한 유저 인터페이스를 만드는 것입니다.

MessageUI프레임워크는 이메일 및 SMS 문자 메시지에 대한 표준 작성 인터페이스를 제공하기 위한 특수한 뷰 컨트롤러를 제공합니다.

사용자가 앱을 떠자이 않아도 이러한 인터페이스를 이용해야 메시지 전달 기능을 추가할 수 있습니다.

(메시지를 보낼 수 없으면 해당 뷰 컨트롤러를 표시하면 안 됩니다.)

resource: https://developer.apple.com/documentation/messageui

그리고 메일이나 메시지를 보낼 수 있다고 했잖아요😆

여기 토픽에 보시면 Email Composition Interface, Message Composition Interface로 구성되어 있습니다.

원하는 것 선택하셔서 사용하면 될 것 같습니다. 

 

저는 메일을 보내는 기능을 구현하기 위해...

MFMailComposeViewController를 활용해볼 거예요.

 

아래와 같이 '이메일 보내기' 버튼을 누르면 이메일을 뜰 수 있도록 뷰 컨트롤러에 버튼 하나를 올려볼게요.

(메일 보내기도 아니고 이메일 보내기라... 뭔가 어색한 느낌이 드네요😅)

그리고 이벤트를 처리하기 위해 버튼을 뷰컨에 연결시켜줍니다.

IBAction안에는 아래와 같이 작성해주세요.

    @IBAction func emailButtonClicked(_ sender: UIButton) {
        if MFMailComposeViewController.canSendMail() {
            let mail = MFMailComposeViewController()
            mail.mailComposeDelegate = self
            mail.setToRecipients(["hyer1k@naver.com"])
            mail.setMessageBody("<p>안녕하세요</p>", isHTML: true)

            present(mail, animated: true)
        } else {
            print("실패했습니다.")
        }
    }

먼저 if문으로 MFMailComposeViewController가 사용할 수 있는지 확인해줘야 합니다.

애플 공식문서에 메시지를 보낼 수 없으면 해당 뷰 컨트롤러를 표시하지 말라네요.

만약에 사용할 수 있다면 MFMailComposeViewController클래스 인스턴스 mail을 만들어줍니다.

mail에 델리게이트를 설정해주고, 저는 수신자 그리고 메시지의 바디까지 작성해줄게요.

그리고 뷰를 뛰워줍니다.

 

즉 버튼이 눌리면 차례로 일어납니다.

1) MFMailComposeViewController가 사용할 수 있는지 확인

2) MFMailComposeViewController클래스 인스턴스 생성

3) 델리게이트 설정

4) 원하는 구성 작성

5) 뷰컨 띄우기

 

저는 수신자와 메시지 바디만 구성했는데 아래와 같이 다른 구성도 추가 가능하니 공식문서를 확인해주세요.

https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller

그리고 뷰 컨트롤러를 사라지는 함수도 만들어 줍니다.

extension ViewController: MFMailComposeViewControllerDelegate {
    func mailComposeController(_ controller: MFMailComposeViewController,
                               didFinishWith result: MFMailComposeResult, error: Error?) {
           controller.dismiss(animated: true)
    }
}

여기까지 작성하고 실행을 해볼게요.

실행시켜서 이메일 보내기를 아무리 눌려도 어떠한 뷰 컨트롤러가 뜨지 않아요.

 

콘솔 창을 확인해보니,,, 실패했습니다 투성이.

실패했습니다.

실패했습니다.

실패했습니다.

실패했습니다.

실패했습니다.

메일이 연결되지 않은 시뮬레이터로 해서 그런 거예요.

메일이 연결되어 있는 실 기기로 다시 연결해줍니다.

코드로 설정해놨던 받는 사람 hyer1k@naver.com이 잘 보이네요.

그리고 메시지의 바디로 안녕하세요. 또한 잘 보입니다.

여기까지 MessageUI 프레임워크를 사용해보았습니다. 

 

전체적인 코드는 아래와 같으니 참고해주세요.

 

https://developer.apple.com/documentation/messageui

 

MessageUI | Apple Developer Documentation

A standard view controller, whose interface lets the user manage, edit, and send email messages.

developer.apple.com

https://developer.apple.com/documentation/messageui/mfmailcomposeviewcontroller

 

MFMailComposeViewController - MessageUI | Apple Developer Documentation

Class MFMailComposeViewController A standard view controller, whose interface lets the user manage, edit, and send email messages. DeclarationOverviewUse this view controller to display a standard email interface inside your app. Before presenting the inte

developer.apple.com

 

'Tech > iOS' 카테고리의 다른 글

Equatable 프로토콜  (0) 2020.05.03
커스텀 로딩 뷰 만들기  (2) 2020.04.26
아이폰 및 아이패드 버전별 사용량 확인하기  (0) 2020.04.07
OCR 사용해보기  (0) 2020.04.07
기기없이 빌드 아카이브 생성하기  (0) 2020.03.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함