やりたいこと
今回はMessageUIを用いたメール機能の実装方法を紹介します。
メール機能 == お問い合わせ機能
として扱えるかと思います。
ユーザー情報を管理する場合、通報機能としても代用できるのでぜひ参考にしてください!
使用するライブラリ
import MessageUI
コード紹介
今回はお問い合わせボタンが存在すると仮定して紹介します。
@IBAction func tapMailButton(_ sender: Any)
はお問い合わせボタンがタップされると呼ばれます。
// お問い合わせボックスをタップすると呼ばれる
@IBAction func tapMailButton(_ sender: Any) {
// メールを送信できるかどうかの確認
if !MFMailComposeViewController.canSendMail() {
print("Mail services are not available")
return
}
// インスタンスの作成とデリゲートの委託
let mailViewController = MFMailComposeViewController()
mailViewController.mailComposeDelegate = self
// 宛先の設定(開発者側のアドレス)
let toRecipients = ["ここにユーザーから受信するメールアドレスを入力"]
// 件名と宛先の表示
mailViewController.setSubject("開発者側で設定する件名")
mailViewController.setToRecipients(toRecipients)
mailViewController.setMessageBody("開発者側で設定する本文", isHTML: false)
// mailViewControllerの反映(メール内容の反映)
self.present(mailViewController, animated: true, completion: nil)
}
これでメールの設定は完了です。
次にメールを開いた後の結果でアクションを分岐します。
// メール機能終了処理
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
// メールの結果で条件分岐
switch result {
// キャンセルの場合
case .cancelled:
print("Email Send Cancelled")
break
// 下書き保存の場合
case .saved:
print("Email Saved as a Draft")
break
// 送信成功の場合
case .sent:
print("Email Sent Successfully")
break
// 送信失敗の場合
case .failed:
print("Email Send Failed")
break
default:
break
}
//メールを閉じる
controller.dismiss(animated: true, completion: nil)
}
これでMessageUIを用いたメール機能(お問い合わせ機能)の実装は完了です。
アドレスや、件名や本文を自身で触ってみると楽しいですよ!
備考
メール機能はXcodeのシュミレーターでは動かないので、動作確認は実機で行うようにして下さい。