[swift] 문자 메시지에 대한 Swift 퍼미션(Permission) 요청 방법.

앱을 개발하다 보면 사용자의 주소록에 접근하여 문자 메시지를 보내는 경우가 있습니다. 하지만 이를 위해서는 사용자로부터 문자 메시지에 대한 퍼미션(Permission)을 요청해야 합니다.

이번 포스트에서는 Swift 언어를 사용하여 문자 메시지에 대한 퍼미션을 요청하는 방법에 대해 알아보겠습니다.

단계 1: Info.plist 수정

먼저, Info.plist 파일에 해당 퍼미션 요청 관련 내용을 추가해야 합니다. 아래의 코드를 Info.plist 파일의 <dict> 태그 안에 삽입해주세요.

<key>NSContactsUsageDescription</key>
<string>사용자의 주소록에 접근하여 문자 메시지를 보내기 위해 필요합니다.</string>

위의 코드에서 <string> 내용은 사용자에게 표시할 문자열입니다. 이 문자열은 사용자에게 퍼미션 요청 시에 표시됩니다.

단계 2: 퍼미션 요청 함수 작성

이제 앱에서 문자 메시지에 대한 퍼미션을 요청하는 함수를 작성해야 합니다. 아래의 코드를 앱의 적절한 파일(예: ViewController.swift)에 삽입해주세요.

import UIKit
import MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {
    // ...

    func requestPermissions() {
        if MFMessageComposeViewController.canSendText() {
            let controller = MFMessageComposeViewController()
            controller.messageComposeDelegate = self
            present(controller, animated: true, completion: nil)
        } else {
            // 퍼미션을 요청할 수 없는 상황 처리
            // 예: 사용자가 설정에서 문자 메시지 전송을 비활성화한 경우
        }
    }

    // MFMessageComposeViewControllerDelegate 메소드 구현
    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        // 퍼미션 요청 결과 처리
        switch result {
        case .cancelled:
            print("퍼미션 요청이 취소되었습니다.")
        case .sent:
            print("퍼미션 요청이 성공적으로 보내졌습니다.")
        case .failed:
            print("퍼미션 요청이 실패하였습니다.")
        }

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

    // ...
}

단계 3: 퍼미션 요청 실행

퍼미션 요청을 실행하려면 앱에서 해당 함수를 호출해야 합니다. 이를 위해 앱의 적절한 위치에서 requestPermissions() 함수를 호출하면 됩니다.

override func viewDidLoad() {
    super.viewDidLoad()
    // ...

    requestPermissions()
}

퍼미션 요청이 성공하면 사용자는 문자 메시지 전송 화면이 표시됩니다. 사용자가 퍼미션을 허용하거나 거절하면 messageComposeViewController(_:didFinishWith:) 메소드가 호출되어 결과를 처리할 수 있습니다.

이렇게해서 Swift에서 문자 메시지에 대한 퍼미션을 요청하는 방법을 알아보았습니다. 사용자의 동의를 얻어야 할 경우, 앱의 요구에 맞게 퍼미션 요청을 수정하여 사용자 경험을 개선할 수 있습니다.

참고 자료