[swift] 권한 부족 예외

앱을 개발하다 보면 사용자의 권한이 필요한 경우가 많습니다. 예를 들어, 사용자의 사진 앨범에 접근하거나 카메라를 사용하는 경우에는 권한이 필요합니다. 이러한 권한을 요청하고 처리하는 과정에서 사용자가 권한을 거부할 수 있으며, 이 경우 예외를 처리해주어야 합니다.

이번 글에서는 Swift에서 권한 부족 예외를 처리하는 방법에 대해 알아보겠습니다.

1. Info.plist 파일 수정하기

먼저, 앱의 Info.plist 파일에 권한 요청을 위한 설정을 추가해야 합니다. 앱이 카메라 또는 사진 앨범에 접근해야 한다면, 다음과 같이 Info.plist 파일에 열람 권한 요청 키를 추가해야 합니다.

<key>NSPhotoLibraryUsageDescription</key>
<string>사진 앨범에 접근하기 위해 권한이 필요합니다.</string>

또는 카메라 권한이 필요한 경우 다음과 같이 카메라 사용 권한 요청 키를 추가해야 합니다.

<key>NSCameraUsageDescription</key>
<string>카메라를 사용하기 위해 권한이 필요합니다.</string>

2. 권한 요청하기

권한을 요청하기 위해선 PHPhotoLibrary 또는 AVCaptureDevice와 같은 클래스를 사용해야 합니다. 예를 들어, PHPhotoLibrary를 이용해서 사진 앨범 접근 권한을 요청하는 코드는 다음과 같습니다.

import Photos

PHPhotoLibrary.requestAuthorization { (status) in
    switch status {
    case .authorized:
        // 권한 허용 시 처리할 내용
        break
    case .denied, .restricted:
        // 권한 거부 또는 제한 시 처리할 내용
        break
    case .notDetermined:
        // 권한이 결정되지 않은 상태
        break
    @unknown default:
        break
    }
}

카메라 권한을 요청하는 경우에는 AVCaptureDevice를 사용하며, 다음과 같은 코드를 사용합니다.

import AVFoundation

AVCaptureDevice.requestAccess(for: .video) { (granted) in
    if granted {
        // 권한 허용 시 처리할 내용
    } else {
        // 권한 거부 시 처리할 내용
    }
}

3. 예외 처리하기

권한 요청 후, 사용자가 권한을 허용 또는 거부할 수 있습니다. 이를 처리하기 위해서는 적절한 예외 처리를 해주어야 합니다. 예를 들어, 권한이 거부된 경우 알림을 표시하거나 해당 기능을 사용하지 못하도록 막을 수 있습니다.

if PHPhotoLibrary.authorizationStatus() == .denied {
    // 권한 거부 시 처리할 내용
} else {
    // 권한 허용 시 처리할 내용
}

결론

Swift에서 권한 부족 예외를 처리하는 방법에 대해 알아보았습니다. Info.plist 파일에 권한 설정을 추가하고, 적절한 권한 요청 코드를 작성하여 권한을 허용하거나 거부하는 상황을 처리할 수 있습니다. 앱의 사용자 경험을 개선하기 위해 권한 요청 시 적절한 예외 처리를 해주는 것이 중요합니다.

더 자세한 내용은 Apple Developer Documentation을 참조하시기 바랍니다.