본문 바로가기
iOS/Xcode

[iOS] privacy-sensitive 해결 방법

by startSW 2023. 10. 15.

 

"This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data."

 

이 오류는 iOS 앱이 카메라에 액세스하려고 할 때 사용자에게 앱이 카메라 데이터를 어떻게 사용하는지 설명하는 사용 설명이 부족할 때 발생합니다. 

iOS는 개인 정보 보호 및 보안을 강화하기 위해 사용자에게 앱이 민감한 데이터에 액세스할 때 왜 그 데이터가 필요한지 설명하는 사용 설명을 요구합니다.

해결 방법은 다음과 같습니다

1. Info.plist에 NSCameraUsageDescription 추가

    Info.plist 파일을 열고 `NSCameraUsageDescription` 키를 추가합니다.

    이 키의 값은 사용자에게 카메라 액세스 권한을 요청하는 설명 메시지여야 합니다.

    이 메시지는 사용자에게 왜 카메라 액세스 권한이 필요한지 이해시킬 수 있어야 합니다.

    예를 들어:

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>

 

 

 

 

 

2. GUI 로 설정하는 방법은 아래와 같습니다.

    1) Info -> Information Property List -> 오른쪽 마우스 버튼 클릭하고 Add Row 메뉴를 클릭합니다.

    2) Property Item이 하나 추가된 것을 확인 할 수 있습니다.

   

     3) Key에 "NSCameraUsageDescription"를 입력하고, Value 에 "$(PRODUCT_NAME) uses camera"를 입력합니다.

          NSCameraUsageDescription를 입력하면 "Privacy - Camera Usage Description"으로 자동 변경되는 것을 확인할 수 있습니다.

 

 

 

3. 이제 다시 빌드하면 모든 오류가 사라진 것을 확인 할 수 있습니다.

 

 

 

4. 다른 Privacy 관련 아이템을 추가하려면 아래의 Key-Value를 사용하면 됩니다.

 

Calendar

Key    :  Privacy - Calendars Usage Description
Value  :  $(PRODUCT_NAME) calendar events

Reminder :

Key    :   Privacy - Reminders Usage Description
Value  :   $(PRODUCT_NAME) reminder use

Contact :

Key    :   Privacy - Contacts Usage Description
Value  :  $(PRODUCT_NAME) contact use

Photo :

Key    :  Privacy - Photo Library Usage Description
Value  :  $(PRODUCT_NAME) photo use

Bluetooth Sharing :

Key    :  Privacy - Bluetooth Peripheral Usage Description
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

Microphone (also used for video recording) :

Key    :  Privacy - Microphone Usage Description
Value  :  $(PRODUCT_NAME) microphone use

Camera (photo or video recording) :

Key    :  Privacy - Camera Usage Description
Value  :  $(PRODUCT_NAME) camera use

Location :

Key    :  Privacy - Location Always Usage Description
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description
Value  :  $(PRODUCT_NAME) location use

Heath :

Key    :  Privacy - Health Share Usage Description
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description
Value  :  $(PRODUCT_NAME) heath update use

HomeKit :

Key    :  Privacy - HomeKit Usage Description
Value  :  $(PRODUCT_NAME) home kit use

Media Library :

Key    :  Privacy - Media Library Usage Description
Value  :  $(PRODUCT_NAME) media library use

Motion :

Key    :  Privacy - Motion Usage Description
Value  :  $(PRODUCT_NAME) motion use

Speech Recognition :

Key    :  Privacy - Speech Recognition Usage Description
Value  :  $(PRODUCT_NAME) speech use

SiriKit :

Key    :  Privacy - Siri Usage Description
Value  :  $(PRODUCT_NAME) siri use

TV Provider :

Key    :  Privacy - TV Provider Usage Description
Value  :  $(PRODUCT_NAME) tvProvider use