[swift] 카메라 사용 Swift 퍼미션(Permission) 요청 시 카메라 권한이 거부되었을 때 처리 방법.

iOS 앱을 개발하다 보면, 카메라 기능을 사용해야 할 때가 있습니다. 하지만 사용자가 앱의 카메라 권한을 거부할 수도 있습니다. 이 경우에는 적절한 처리 방법을 구현해야 합니다. 이번 포스트에서는 Swift를 사용하여 카메라 사용 권한 요청 후 거부되었을 때 처리하는 방법을 알아보겠습니다.

카메라 권한 요청 처리하기

우선, 앱에서 카메라 권한을 요청하는 부분을 구현해야 합니다. 아래의 코드를 사용하여 카메라 권한을 요청하는 코드를 작성해 보겠습니다.

import AVFoundation

func requestCameraPermission() {
    AVCaptureDevice.requestAccess(for: .video) { (granted) in
        if granted {
            // 카메라 권한이 허용되었을 때 수행할 동작
            print("카메라 권한이 허용되었습니다.")
        } else {
            // 카메라 권한이 거부되었을 때 수행할 동작
            print("카메라 권한이 거부되었습니다.")
        }
    }
}

위에서 구현한 requestCameraPermission 함수는 카메라 권한을 요청하고, 권한 허용 여부에 따라 적절한 동작을 수행합니다.

거부 시 처리 방법 구현하기

카메라 권한이 거부되었을 때, 사용자에게 알림을 표시하고 필요한 조치를 취할 수 있도록 처리를 구현해야 합니다. 아래의 코드를 사용하여 카메라 권한이 거부되었을 때 경고창을 표시하는 코드를 작성해 보겠습니다.

import AVFoundation
import UIKit

func requestCameraPermission() {
    AVCaptureDevice.requestAccess(for: .video) { (granted) in
        if granted {
            // 카메라 권한이 허용되었을 때 수행할 동작
            print("카메라 권한이 허용되었습니다.")
        } else {
            // 카메라 권한이 거부되었을 때 수행할 동작
            let alertController = UIAlertController(title: "카메라 권한 거부",
                                                    message: "카메라 권한을 허용해야 이 기능을 사용할 수 있습니다.",
                                                    preferredStyle: .alert)
            let settingsAction = UIAlertAction(title: "설정으로 이동",
                                               style: .default) { (_) in
                guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
                    return
                }
                
                if UIApplication.shared.canOpenURL(settingsUrl) {
                    UIApplication.shared.open(settingsUrl)
                }
            }
            alertController.addAction(settingsAction)
            
            let cancelAction = UIAlertAction(title: "취소", style: .cancel, handler: nil)
            alertController.addAction(cancelAction)
            
            DispatchQueue.main.async {
                UIApplication.shared.keyWindow?.rootViewController?.present(alertController, animated: true, completion: nil)
            }
        }
    }
}

위의 코드에서는 UIAlertController를 사용하여 거부되었을 때 카메라 권한을 다시 설정할 수 있는 설정 화면으로 이동할 수 있는 알림을 표시합니다.

결론

이번 포스트에서는 Swift를 사용하여 카메라 권한 요청 후 거부되었을 때 처리하는 방법을 알아보았습니다. 앱에서 카메라 권한을 요청하고, 거부되었을 때 적절한 알림을 표시하고 사용자가 설정 화면으로 이동할 수 있도록 구현할 수 있습니다.