이번에는 앱에서 Email을 보낼 수 있는 기능을 구현해보았습니다.
iOS 14+부터 지원하는 openURL을 사용합니다 .
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. 그러나.. 시뮬레이터에서 실행하면 아무런 변화가 없는데요. 시뮬레이터에서는 해당 기능을 지원하지 않기 때문입니다.
실행 후 콘솔창에 다음과 같이 나타나는지 확인해주세요.
위와 같은 코드가 나타나면 정상적으로 작동하는 것입니다.
실제 아이폰에서 실행하면 정상적으로 메일을 보낼 수 있습니다.
콘솔창에서 알수 없는 코드로 보이는 것은 한글이 깨져서 보이는 것인데요.
아이폰에서는 정상적인 한글이 보입니다.
참고 유튜브:
'Project > SwiftUI 블록와이드' 카테고리의 다른 글
[SwiftUI Project] ScrollView에서 TabView 사용 시 높이가 사라지는 문제 (0) | 2022.11.06 |
---|---|
[SwiftUI Project] Fatal error: Array index is out of range (0) | 2022.11.06 |
[SwiftUI Project] 다크모드/라이트모드 전환 버튼 만들기 (0) | 2022.10.27 |
[SwiftUI Project] 텍스트필드 글자 수 제한하기 (문제 해결 과정) (0) | 2022.10.19 |
[SwiftUI Project] 뉴스기사 URL 공유 버튼 만들기 (0) | 2022.10.19 |
댓글