개발/FRONT

Info.plist 개인정보 사용 목적 누락(ITMS-90683) 오류 해결방법

Hdev&Shoes 2025. 12. 23. 21:40
728x90

 

 

App Store 제출/리뷰에서 가장 자주 막히는 오류는 “Missing Purpose String in Info.plist” (ITMS-90683)다. 카메라, 위치, 사진, 마이크 등 개인정보에 접근하는데 Info.plist에 설명이 없으면 바로 리젝된다. 이 글은 누락이 발생하는 이유, 에러 메시지 패턴, 수정 방법, 재발 방지 체크리스트를 정리했다.


1. 왜 발생하나? (ITMS-90683 패턴)

iOS 10 이후 개인정보에 접근하려면 Info.plist에 사용 목적 문자열(Purpose String)을 넣어야 한다. 라이브러리(카메라/푸시/위치/사진/블루투스 등)를 추가했는데 대응 키를 넣지 않으면 App Store Connect 검사나 심사에서 다음과 같이 실패한다:

ITMS-90683: Missing Purpose String in Info.plist
NSCameraUsageDescription
NSLocationWhenInUseUsageDescription
NSPhotoLibraryUsageDescription
...
핵심: 앱 코드에서 해당 권한 API를 “사용하지 않아도”, 포함된 SDK가 접근할 수 있으면 목적 문자열이 필요하다.

2. 필요한 Info.plist 키 목록

프로젝트에 따라 달라지지만, 출시에서 자주 요구되는 키들은 아래와 같다. (설명은 실제 서비스 문구로 교체)

<key>NSCameraUsageDescription</key>
<string>[카메라 사용 목적 설명]</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>[앨범/사진 접근 목적 설명]</string>

<key>NSMicrophoneUsageDescription</key>
<string>[마이크 사용 목적 설명]</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>[앱 사용 중 위치 접근 목적 설명]</string>

<key>NSBluetoothAlwaysUsageDescription</key>
<string>[블루투스 사용 목적 설명]</string>

<key>NSUserTrackingUsageDescription</key>
<string>[ATT 트래킹 목적 설명]</string>
TIP: Push 알림은 NSUserNotificationUsageDescription 대신 iOS 12+에서는 별도 문자열이 필요하지 않지만, 알림을 통한 개인정보 활용 내용은 심사 노트에 적어두면 좋다.

3. 수정 방법 (Xcode / Capacitor / Flutter 공통)

3.1 Xcode에서 직접 수정

ios/App/App/Info.plist

Xcode에서 Info.plist를 열어 필요한 키/문자열을 추가한다. 리뷰에 맞게 실제 사용 목적을 한국어/영어로 명확히 작성.

3.2 Capacitor/Hybrid (config 유지)

<platform name="ios">
  <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
    <string>[카메라 사용 목적 설명]</string>
  </edit-config>
  <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
    <string>[앨범 사용 목적 설명]</string>
  </edit-config>
</platform>

Capacitor/Cordova는 config.xml이나 Capacitor 5부터는 ios/App/App/Info.plist를 직접 커밋해두고, npx cap sync ios 후 Xcode에서 확인한다.

3.3 빌드 후 검증

grep -A1 NSCameraUsageDescription ios/App/App/Info.plist
grep -A1 NSPhotoLibraryUsageDescription ios/App/App/Info.plist

CI나 로컬에서 grep으로 키가 포함됐는지 확인하고, TestFlight 빌드로 실제 권한 팝업 문구를 검증한다.


4. 리뷰 제출 전 점검 체크리스트

  • 앱에서 사용하는 모든 권한에 대한 목적 문자열이 Info.plist에 존재하는지 확인
  • 문구는 실제 사용 시나리오를 명확히 설명(예: “프로필 사진 업로드를 위해 카메라가 필요합니다”)
  • 다국어 지원 시, 심사에 보이는 기본 언어(주로 영어) 문구도 자연스럽게 작성
  • npx cap sync ios 후 Xcode에서 최종 Info.plist를 다시 한 번 확인
  • TestFlight로 실제 권한 팝업을 테스트하여 오타/누락 확인
✅ 핵심 요약:
  • ITMS-90683은 Info.plist에 권한 목적 문자열이 없어서 발생한다.
  • 카메라/사진/마이크/위치/블루투스/ATT 등 사용 가능성이 있는 SDK를 쓴다면 모두 키를 추가한다.
  • Capacitor/하이브리드는 Info.plist를 리포에 포함하고, npx cap sync ios 후 Xcode에서 최종 확인.
  • TestFlight에서 실제 팝업 문구를 검증해 리젝을 미리 방지한다.

 

 

카카오톡 오픈채팅 링크

https://open.kakao.com/o/seCteX7h

 

728x90