본문 바로가기
Project/SwiftUI 블록와이드

[SwiftUI Project] 앱에서 Email 보내기 OpenURL

by iOS_woo 2022. 10. 27.

이메일 보내기 예시

이번에는 앱에서 Email을 보낼 수 있는 기능을 구현해보았습니다.

 

iOS 14+부터 지원하는 openURL을 사용합니다 .

 

Apple Developer Documentation

 

developer.apple.com

 

1. Model을 생성해줍니다.

import Foundation
import SwiftUI

struct SupportEmailModel {
    let toAddress: String // 개발자 이메일
    let subject: String // 제목
    var body: String {"""
        의견을 보내주시면 더 나은 서비스 개발에 활용됩니다. 
    """ 
    }
    
    // openURL
    func send(openURL: OpenURLAction) {
        let urlString = "mailto:\(toAddress)?subject=\(subject.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "")&body=\(body.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "")"
        guard let url = URL(string: urlString) else { return }
        openURL(url) { accepted in
            if !accepted {
                print("ERROR: 현재 기기는 이메일을 지원하지 않습니다.")
            }
        }
    }
}

 

2. View에서는 이렇게 사용 할 수 있습니다.

struct SettingsView: View {

    @Environment(\.openURL) var openURL
    private var email = SupportEmailModel(toAddress: "hanulbom@gmail.com", subject: "문의하기")
    
    var body: some View {
        HStack {
                HStack(spacing: 10) {
                    Image(systemName: "mail")
                        .frame(width: 30, height: 30)
                    Text("문의하기")
                        .foregroundColor(Color.theme.textColor)
                }
                Spacer()
                chevron_right
        }
        .padding()
        .onTapGesture {
            email.send(openURL: openURL) // 탭하면 함수 send 실행
        }
    }
}

완료!

 

3. 그러나.. 시뮬레이터에서 실행하면 아무런 변화가 없는데요. 시뮬레이터에서는 해당 기능을 지원하지 않기 때문입니다.

실행 후 콘솔창에 다음과 같이 나타나는지 확인해주세요.

위와 같은 코드가 나타나면 정상적으로 작동하는 것입니다.  

실제 아이폰에서 실행하면 정상적으로 메일을 보낼 수 있습니다.

 

콘솔창에서 알수 없는 코드로 보이는 것은 한글이 깨져서 보이는 것인데요.

아이폰에서는 정상적인 한글이 보입니다. 

 

 

참고 유튜브: 

 

댓글