iOS | privacy-sensitive data 접근 문제 해결하기 (NSCameraUsageDescription key)

소요 시간: 3분

오늘, 나는 iOS 애플리케이션 개발 중 예상치 못한 에러 메시지를 마주하게 되었다. “이 앱은 개인 정보에 민감한 데이터에 접근하려고 했기 때문에 충돌했습니다. 앱의 Info.plist에는 NSCameraUsageDescription 키가 포함되어 있어야 하며, 사용자에게 이 데이터가 어떻게 사용되는지 설명하는 문자열 값이 필요합니다.”라는 에러 메시지가 내 마음속에 불안감을 안겼다.

처음 이 메시지를 봤을 때, 한동안 멍하니 화면을 바라보았다. 카메라 기능을 추가하는 것을 잊었는지 의심스러웠고, 결국 원인을 찾기 위해 다시 한 번 프로젝트를 점검하기로 결심했다.


에러 원인 이해하기

에러 메시지에서 언급된 NSCameraUsageDescription 키는 iOS 애플리케이션이 카메라와 같은 개인 정보를 사용할 때 반드시 필요하다는 사실을 상기시켰다. iOS에서는 사용자가 앱의 기능을 사용할 때 해당 권한을 요청하게 되고, 이때 사용자가 이해할 수 있는 설명을 제공해야 한다. 만약 이 설명이 없다면, 앱은 충돌하게 되고 사용자에게 불편을 초래할 수 있다.


NSCameraUsageDescription의 중요성

이 에러는 단순히 기술적인 문제만이 아니다. 앱을 사용하는 모든 사용자가 개인정보 보호를 중요하게 생각한다는 점을 기억해야 한다. 카메라 접근을 요청할 때, 사용자는 "왜 이 앱이 카메라에 접근해야 하지?"라는 의문을 가지게 된다. 따라서, NSCameraUsageDescription에 적절한 설명을 제공하는 것은 사용자에게 신뢰를 주고, 앱의 기능을 원활하게 사용할 수 있도록 돕는 중요한 단계이다.


Info.plist 수정하기

즉시 Xcode에서 Info.plist 파일을 열었다. 이 파일은 앱의 중요한 설정을 담고 있는 곳으로, 다양한 키-값 쌍이 포함되어 있다. 에러 메시지에서 언급한 대로, NSCameraUsageDescription 키를 추가해야 한다는 것을 깨달았다.

수정 방법은 두 가지가 있다:

Xcode 이용하는 방식:

1. Xcode에서 프로젝트를 열고, 왼쪽 패널에서 프로젝트 이름을 클릭한 후 Info.plist 파일을 선택했다.

2. 파일의 마지막 행에 마우스 오른쪽 버튼을 클릭하고 Add Row를 선택했다.

3. 새로 생성된 행의 Key 항목에 NSCameraUsageDescription을 입력했다.

Type은 자동으로 String으로 설정되며, Value 항목에 사용자에게 보여줄 설명을 입력했다. 예를 들어, "이 앱은 사진을 찍기 위해 카메라 접근이 필요합니다."라고 작성했다.

텍스트 편집 방식:

1. Info.plist 파일을 소스 코드 형태로 열기 위해 우클릭한 후 Open As > Source Code를 선택했다.

2. <dict> 태그 안에 다음 코드를 직접 추가했다:

<key>NSCameraUsageDescription</key>
<string>이 앱은 사진을 찍기 위해 카메라 접근이 필요합니다.</string>

이렇게 수정함으로써, 사용자가 카메라 접근 요청을 받았을 때 어떤 이유로 요청하는지를 명확히 알 수 있도록 했다.


앱 실행 및 확인

수정이 끝난 후, 앱을 다시 빌드하여 실행했다. 이전에는 카메라 접근 요청 시 에러가 발생했지만, 이제는 내가 입력한 설명이 사용자에게 잘 전달되었다. 카메라 접근을 요청할 때, 사용자에게 정확한 설명이 나타났고, 앱이 원활하게 실행되는 것을 확인할 수 있었다.


오늘의 경험을 통해, iOS 애플리케이션에서 개인 정보에 대한 접근 권한은 사용자의 신뢰를 구축하는 데 있어 매우 중요한 요소라는 것을 깨달았다. 간단한 설명 하나가 사용자의 불안을 해소하고, 앱의 원활한 작동을 보장해준다는 사실을 깊이 이해하게 되었다. 또한, 사용자에게 명확한 설명을 제공하는 것이 얼마나 중요한지를 느끼며, 다음부터는 카메라, 마이크, 위치 정보 등 모든 민감한 데이터 접근 요청 시 이와 같은 설명을 반드시 포함해야겠다고 다짐했다.

이제 나는 더 이상 NSCameraUsageDescription을 잊지 않을 것이다. 앞으로는 모든 기능을 추가할 때 사용자에게 필요한 설명이 무엇인지 항상 고려해야겠다고 결심했다.

iOS 리스트