[Swift] 권한 요청 정리
iOS를 개발하면서 외부 장치에 대한 권한을 요청해야하는 경우가 있습니다.
그래서 권한을 어떤 상황에서 어떻게 사용되는지 그리고 어떻게 함수로 구현했는지 정리해보겠습니다.
1.위치권한
용도
앱이 사용자의 위치 정보를 사용할 수 있게 해줍니다. 예를 들어, 지도 앱, 위치 기반 추천 서비스 등에 사용됩니다.
Info.plist 설정
NSLocationWhenInUseUsageDescription (앱 사용 중 위치 정보 사용)
NSLocationAlwaysUsageDescription (항상 위치 정보 사용)
NSLocationAlwaysAndWhenInUseUsageDescription (iOS 11 이상, 항상 및 사용 중 위치 정보 사용)
사용 함수
// 앱에 어떤 한정된 기능에서 사용할때 요청 하는 기능
CLLocationManager.requestWhenInUseAuthorization()
// 앱에 언제든지 기능과 관계없이 사용 할 수 있는지 요청하는 기능
CLLocationManager.requestAlwaysAuthorization()
2.카메라
용도
앱이 사용자의 카메라에 접근하여 사진이나 비디오를 캡처할 수 있게 해줍니다.
Info.plist 설정
NSCameraUsageDescription
사용 함수
AVCaptureDevice.requestAccess(for: .video, completionHandler:)
3.사진 앨범
용도
앱이 사용자의 사진 앨범에 접근하여 사진을 읽거나 저장할 수 있게 해줍니다.
Info.plist 설정
NSPhotoLibraryUsageDescription (읽기 및 쓰기)
NSPhotoLibraryAddUsageDescription (사진 일부분만 추가 할 경우)
사용 함수
PHPhotoLibrary.requestAuthorization(_:)
4.마이크
용도
앱이 사용자의 마이크에 접근하여 오디오를 녹음할 수 있게 해줍니다.
Info.plist 설정
NSMicrophoneUsageDescription
사용 함수
AVCaptureDevice.requestAccess(for: .audio, completionHandler:)
5.푸시 알림
용도
앱이 사용자에게 푸시 알림을 보낼 수 있게 해줍니다.
Info.plist 설정
푸시 알림에 대해서는 별도의 Info.plist 설명이 필요하지 않습니다.
사용 함수
UNUserNotificationCenter.requestAuthorization(options:completionHandler:)
6.연락처
용도
앱이 사용자의 연락처에 접근할 수 있게 해줍니다.
Info.plist 설정
NSContactsUsageDescription
사용 함수
CNContactStore.requestAccess(for:completionHandler:)
7.캘린더
용도
앱이 사용자의 캘린더에 접근하여 이벤트를 읽거나 추가할 수 있게 해줍니다.
Info.plist 설정
NSCalendarsUsageDescription
사용 함수
EKEventStore.requestAccess(to:completion:)
8.리마인더
용도
앱이 사용자의 리마인더에 접근할 수 있게 해줍니다.
Info.plist 설정
NSRemindersUsageDescription
사용 함수
EKEventStore.requestAccess(to:completion:)
9.건강 데이터
용도
앱이 사용자의 건강 데이터에 접근할 수 있게 해줍니다.
Info.plist 설정
NSHealthShareUsageDescription (건강 데이터 읽기)
NSHealthUpdateUsageDescription (건강 데이터 쓰기)
사용 함수
HKHealthStore.requestAuthorization(toShare:read:completion:)
참고
각 Info.plist에 들어가는 내용은 어떻게 사용할 것인가에 대한 서술이 필요합니다. 필요한 이유는 아래와 같습니다.
- 사용자의 프라이버시 보호: Apple은 사용자의 프라이버시를 매우 중요하게 여기며, 앱이 사용자의 개인 정보나 디바이스의 중요한 기능(카메라, 마이크, 위치 정보 등)에 접근할 때는 명확한 사용자의 동의가 필요합니다. Info.plist에 권한 요청에 대한 명확한 설명을 제공함으로써, 사용자는 자신의 데이터가 어떻게 사용될지 이해할 수 있으며, 이를 기반으로 정보 접근을 허용할지 결정할 수 있습니다.
- 투명성 및 신뢰 구축: Info.plist에 권한 요청의 목적을 명확하게 기술함으로써, 앱 개발자는 사용자에게 앱이 특정 권한을 요구하는 이유를 투명하게 알릴 수 있습니다. 이는 사용자와의 신뢰를 구축하는 데 중요한 요소입니다.
- 앱 스토어 심사 지침 준수: Apple의 앱 스토어 심사 지침에 따르면, 앱이 사용자의 프라이버시에 영향을 미칠 수 있는 기능에 접근할 경우, 그 목적을 사용자에게 명확하게 알려야 합니다. Info.plist 파일에 적절한 권한 설명을 포함하지 않으면 앱 스토어 심사 과정에서 거부될 수 있습니다.
- 법적 요구사항 충족: 특정 지역이나 국가의 법률에서는 앱이 사용자 데이터를 수집하거나 접근할 때 사용자에게 명시적인 동의를 얻도록 요구하고 있습니다. Info.plist를 통한 권한 설명은 이러한 법적 요구사항을 충족하는 방법 중 하나입니다.
- 사용자 경험 개선: 명확한 권한 설명은 사용자가 앱의 기능과 데이터 사용 방식을 더 잘 이해할 수 있게 해줍니다. 이는 사용자 경험을 개선하고, 사용자가 앱의 기능을 더욱 적극적으로 활용하도록 장려하는 데 도움이 됩니다.
다음 글에서는 어떻게 앱에서 구현을 할지 정리해보도록 하겠습니다.
[Swift] 권한 요청 사용 + 구현하기 (feat. SwiftUI)
[Swift] 권한 요청 정리 iOS를 개발하면서 외부 장치에 대한 권한을 요청해야하는 경우가 있습니다. 그래서 권한을 어떤 상황에서 어떻게 사용되는지 그리고 어떻게 함수로 구현했는지 정리해보
development.godol.kr