[swift] PKHUD를 이용한 메일 전송 상태 표시 방법

이번 포스트에서는 Swift 언어를 사용하여 메일 전송 상태를 표시하기 위해 PKHUD를 어떻게 사용하는지 알아보겠습니다.

1. PKHUD란 무엇인가요?

PKHUD는 Swift로 작성된 사용하기 쉬운 iOS용 액티비티 인디케이터 뷰 라이브러리입니다. 이 라이브러리를 사용하여 사용자에게 메일 전송 상태를 알려주는 간단한 인디케이터를 만들 수 있습니다.

2. PKHUD 설치 방법

PKHUD를 설치하기 위해서는 CocoaPods를 사용해야 합니다. Podfile에 다음과 같이 PKHUD를 추가합니다.

pod 'PKHUD'

설치가 완료되면, 프로젝트에서 import PKHUD를 사용하여 PKHUD를 사용할 수 있습니다.

3. 메일 전송 상태 표시 방법

다음과 같은 코드를 사용하여 메일 전송 상태를 표시합니다.

import PKHUD
import MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate {

    func sendMail() {
        // 메일 쓰기 뷰컨트롤러 생성
        let mailComposeViewController = MFMailComposeViewController()
        mailComposeViewController.mailComposeDelegate = self
        mailComposeViewController.setToRecipients(["example@example.com"])
        mailComposeViewController.setSubject("Hello!")
        mailComposeViewController.setMessageBody("This is a test email", isHTML: false)

        // PKHUD 표시
        PKHUD.sharedHUD.contentView = PKHUDProgressView()
        PKHUD.sharedHUD.show()

        // 메일 전송 체크
        if MFMailComposeViewController.canSendMail() {
            self.present(mailComposeViewController, animated: true, completion: nil)
        } else {
            // 메일 전송이 불가능할 경우 PKHUD 숨김
            PKHUD.sharedHUD.hide(animated: true)
        }
    }

    // 메일 전송 결과 처리
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        PKHUD.sharedHUD.hide(animated: true)

        var message = ""
        switch result {
        case .cancelled:
            message = "메일 전송이 취소되었습니다."
        case .saved:
            message = "메일이 저장되었습니다."
        case .sent:
            message = "메일이 전송되었습니다."
        case .failed:
            message = "메일 전송에 실패하였습니다."
        @unknown default:
            message = "알 수 없는 결과입니다."
        }

        let alertController = UIAlertController(title: "알림", message: message, preferredStyle: .alert)
        let action = UIAlertAction(title: "확인", style: .default, handler: nil)
        alertController.addAction(action)
        self.present(alertController, animated: true, completion: nil)

        controller.dismiss(animated: true, completion: nil)
    }
}

위의 코드는 MFMailComposeViewController를 사용하여 메일을 작성하고, 메일 전송 상태에 따라 PKHUD를 표시합니다. 메일 전송 결과는 delegate 메서드인 mailComposeController(_:didFinishWith:error:)에서 처리하고, 결과에 따라 적절한 알림을 표시합니다.

이제 PKHUD를 사용하여 메일 전송 상태를 표시하는 방법을 익혔습니다. PKHUD는 다양한 스타일의 인디케이터를 제공하기 때문에, 상황에 맞게 사용하실 수 있습니다.

더 자세한 내용은 PKHUD 공식 GitHub 페이지를 참조하시기 바랍니다.