본문 바로가기
개발 모바일 보안

iOS 앱을 위한 Privacy Manifest 가이드

Capacitor iOS 앱의 PrivacyInfo.xcprivacy를 위한 2026년 준수 사항 및 트러블슈팅 가이드: required reason APIs, ITMS-91053, ITMS-91061 및 서드파티 SDK manifest 관련 사항.

iOS 앱을 위한 Privacy Manifest 가이드

App Store 업로드를 위해 Apple privacy manifest는 필수입니다: 모든 앱에는 다음이 필요합니다: PrivacyInfo.xcprivacy 앱의 데이터 수집, 트래킹 도메인 및 다음 사항을 설명하는 필수 사유 API 귀하의 code 호출. 다음의 서드파티 SDK: Apple 필수 목록 자체 매니페스트(바이너리 배포 시 서명 포함)를 반드시 포함해야 합니다. 이 가이드는 다음 사항에 집중합니다: 2026년 규정 준수 및 트러블슈팅 for Capacitor iOS 앱: 선언 항목 및 해결 방법 ITMS-91053 및 ITMS-91061, 그리고 제출 전 검증 방법입니다.

개인정보 보호 매니페스트의 범위

개인정보 보호 매니페스트는 앱 또는 SDK에 포함되는 프로퍼티 리스트입니다. Xcode는 아카이브 시 모든 매니페스트를 하나의 개인정보 보호 보고서로 통합합니다.

주요 목적
NSPrivacyTracking 앱 또는 SDK가 Apple의 정의에 따라 트래킹 목적으로 데이터를 사용하는지 여부
NSPrivacyTrackingDomains 트래킹에 관여하는 도메인
NSPrivacyCollectedDataTypes 수집된 데이터 유형 및 사용 방식
NSPrivacyAccessedAPITypes 사용 중인 필수 이유 API 자체 code가 사용하는 승인된 이유 코드

Apple 개요: 앱 또는 서드파티 SDK에 프라이버시 매니페스트 추가하기.

임베디드 SDK를 포함하여 바이너리 내의 모든 code에 대한 책임은 개발자에게 있습니다. 매니페스트에는 본인의 앱에 대한 정보만기재해야 합니다. 다른 SDK의 데이터 처리 방식을 파일에 그대로 복사하지 마세요.

필수 사유 API 카테고리

이후 2024년 5월 1일부터, 앱에서 나열된 API를 사용하면서 승인된 사유를 명시하지 않으면 App Store Connect에서 업로드가 거부됩니다. NSPrivacyAccessedAPITypesApple은 API와 승인된 사유를 다음에서 안내하고 있습니다: 필수 사유 API 사용법 설명.

Apple의 TN3183에 따르면, 카테고리 값은 다음과 같습니다:

NSPrivacyAccessedAPIType 값 하이브리드 앱의 일반적인 트리거
NSPrivacyAccessedAPICategoryUserDefaults 설정, 플러그인 상태, 소량의 영구 데이터
NSPrivacyAccessedAPICategoryFileTimestamp 파일 메타데이터, 캐시, 업데이트 번들
NSPrivacyAccessedAPICategoryDiskSpace 다운로드 전 여유 공간 확인
NSPrivacyAccessedAPICategorySystemBootTime 경과 시간, 타이머 또는 절대 타임스탬프
NSPrivacyAccessedAPICategoryActiveKeyboards 키보드 확장 프로그램 또는 입력 감지

사용하는 각 카테고리마다 다음을 포함하는 딕셔너리를 하나 추가하세요 NSPrivacyAccessedAPIType 및 NSPrivacyAccessedAPITypeReasons. 선택하세요 오직 해당 카테고리에서 Apple이 나열한 reason code만 사용하세요. 잘못된 코드는 심사 실패로 이어집니다.

예시 코드 조각 (개인정보 보호 보고서를 확인한 후 앱에 맞게 카테고리와 코드를 조정하세요):

<key>NSPrivacyAccessedAPITypes</key>
<array>
  <dict>
    <key>NSPrivacyAccessedAPIType</key>
    <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
    <key>NSPrivacyAccessedAPITypeReasons</key>
    <array>
      <string>CA92.1</string>
    </array>
  </dict>
</array>

Capacitor 자체가 Apple의 서드파티 SDK 요구 사항 목록에 포함되어 있으므로, 프레임워크는 Capacitor 자체의 API 사용을 위한 매니페스트를 제공합니다. 여전히 앱 레벨 매니페스트가 필요합니다: 여러분의 네이티브 및 JavaScript 레이어, 플러그인, 그리고 의존성에서 다루지 않는 모든 API.

ITMS-91053: API 선언 누락

ITMS-91053 App Store Connect가 빌드에서 필수 사유 API를 감지했지만, 병합된 프라이버시 매니페스트에 일치하는 항목이 없다는 뜻입니다.

해결 방법:

  1. 거절 이메일이나 업로드 로그를 확인하세요. 거기에 API 카테고리가 명시되어 있습니다 (예를 들어 NSPrivacyAccessedAPICategoryDiskSpace).
  2. Xcode에서 아카이브 개인정보 보호 보고서를 엽니다 (제품 > 아카이브, 그 다음 개인정보 보호 보고서 생성하기 아카이브에서 선택) 그런 다음 해당 차이가 앱 타겟에 있는지 아니면 의존성(dependency)에 있는지 확인하세요.
  3. 만약 API이 여러분의 code 또는 직접 소유한 플러그인에 있다면, 해당 카테고리와 승인된 사유를 추가하세요. ios/App/PrivacyInfo.xcprivacy.
  4. 만약 API이 의존성에서 발생한다면, 매니페스트가 포함된 버전으로 pod 또는 SPM 패키지를 업그레이드하거나, 플러그인을 패치하여 포크(fork)한 코드에서 실제로 호출하는 항목만 선언하세요.
  5. 다시 아카이브한 후, 다시 upload하기 전에 보고서에 해당 카테고리가 나타나는지 확인하세요.

사용하지 않는 카테고리는 선언하지 마세요. Apple의 정적 분석은 바이너리 내의 심볼과 연동됩니다.

ITMS-91061: 서드파티 개인정보 보호 매니페스트 누락

ITMS-91061 은(는) 개인정보에 영향을 주는 SDK이(가) 앱 번들에 포함되어 있으나 PrivacyInfo.xcprivacy매니페스트가 없음을 의미합니다. Apple은 새 앱을 출시하거나 목록에 있는 SDK을(를) 추가할 때, 해당 SDK에 매니페스트가 포함되어야 한다고 명시합니다. 바이너리 SDK에는 유효한 서명(signature) 이(가) SDK 공급업체로부터 제공되어야 합니다.

해결 방법:

  1. 이메일에서 framework 경로를 복사하세요 (예: Frameworks/FirebaseCore.framework/FirebaseCore).
  2. CocoaPods, SPM 또는 vendored binary 패키지를 확인하세요.
  3. 다음이 포함된 vendor 릴리스로 업그레이드하세요: PrivacyInfo.xcprivacy framework 루트에 위치합니다.
  4. 파일을 clean, rebuild한 후 다음 내부에서 확인하세요: .xcarchive upload 전 확인이 필요합니다.

주의: SDK의 collection이나 API 선언을 앱 manifest로 옮기지 마세요. Apple은 앱 manifest에 앱 자체에 대한 정보만 기술해야 한다고 명시적으로 경고합니다. 만약 SDK가 관리되지 않는다면, 교체하거나 규정을 준수하는 빌드를 vendor 하세요.

목록에 포함된 SDK는 일반적인 모바일 스택(Firebase, Flutter, Capacitor, shared_preferences_ios, 기타 등등)을 포함합니다. 각 릴리스 전에 Apple 사이트에서 최신 목록을 확인하세요.

Third-party SDK manifest 및 signature

의존성을 업데이트할 때, Xcode는 바이너리 프레임워크가 이전 릴리스와 동일한 개발자에 의해 서명되었는지 검증합니다. 이는 매니페스트가 변경될 때 공급망을 보호하는 역할을 합니다.

실무 워크플로우:

  • 이후 pod install 또는 SPM을 해결한 다음, 다음을 검색하세요: ios/ 다음 PrivacyInfo.xcprivacy 파일.
  • 아카이브 및 사용 Privacy Report 생성 전체적인 현황을 파악하려면 보고서를 확인하세요.
  • 보고서 내용을 App Store 개인정보 보호 설문 답변과 비교하세요.

live update 도구를 사용하는 경우, 업데이트 시 실제로 사용하는 required reason API(예: 디스크 공간, 파일 타임스탬프, user defaults 등)를 선언해야 합니다. 네트워크 액세스는 required reason API 카테고리에 해당하지 않습니다. 업데이트어가 개인 데이터를 수집하는 경우, App Store 개인정보 보호 라벨 및 설문 답변에 해당 데이터를 공개해야 합니다. 단순히 HTTPS를 통해 업데이트를 가져오는 것만으로는 새로운 공개 카테고리가 생성되지 않습니다. 다음을 유지하세요: Capgo live update 준수 OTA 동작을 문서화할 때 염두에 두세요.

추가 PrivacyInfo.xcprivacy Capacitor iOS 프로젝트에서

  1. 네이티브 프로젝트 동기화: bunx cap sync ios.
  2. 아래 경로의 Xcode workspace를 엽니다 ios/App.
  3. 파일 > New > File, 다음을 선택합니다: 앱 개인정보 보호 (또는 빈 PrivacyInfo.xcprivacy plist를 추가합니다).
  4. 파일을 아래 경로에 저장합니다 ios/App (다음과 동일한 폴더 AppDelegate 괜찮습니다).
  5. 대상 Build Phases > Copy Bundle Resources, 확인하세요 PrivacyInfo.xcprivacy 가 목록에 있는지.
  6. 앱과 플러그인에 따라 트래킹, 수집 데이터 유형 및 필수 이유 API를 입력하세요.
  7. Archive를 실행하여 개인정보 보호 보고서를 생성하고, App Store Connect에 업로드하기 전에 누락된 카테고리를 수정하세요.

디스크에서 plist를 XML로 직접 편집한 경우, target membership이 올바르게 유지되도록 Xcode를 다시 여세요.

각 앱 또는 SDK 타겟은 자체 PrivacyInfo.xcprivacy를 유지합니다. Archive 시 Xcode가 해당 매니페스트들을 하나의 개인정보 보호 보고서로 통합합니다. 종속성 plist를 앱 파일에 수동으로 병합할 필요는 없습니다.

를 위한 커스텀 Capacitor 플러그인 별도의 iOS framework로 배포되는 경우, 추가 PrivacyInfo.xcprivacy 해당 플러그인의 ios/Plugin/ 폴더(또는 그에 준하는 곳)에 넣고 플러그인 타겟의 Bundle 리소스 복사뿐만 아니라 앱 타겟에도 포함해야 합니다.

시기 NSPrivacyTracking 데이터 수집이 발생하거나 광고/분석 SDK를 포함하는 경우, 매니페스트를 App Store 개인정보 보호 레이블과 일치시키고 iOS에서 요구할 때 App Tracking Transparency 프롬프트를 표시해야 합니다. @capgo/capacitor-app-tracking-transparency Capacitor 앱을 위한 ATT 흐름을 다룹니다.

제출 전 검증 체크리스트

  • App 타겟 포함 사항 PrivacyInfo.xcprivacy 에서 Bundle Resources 복사.
  • 거절 또는 보고서에 명시된 모든 필수 사유 카테고리에 승인된 사유 코드가 포함되어 있습니다.
  • 빌드에 포함된 각 서드파티 SDK는 지정된 경로에 자체 매니페스트를 포함합니다.
  • 개인정보 보고서가 분석, 광고 및 인증 SDK에 대한 귀하의 파악 내용과 일치합니다.
  • App Store 개인정보 레이블이 병합된 보고서와 일치합니다.

자주 묻는 질문

Capacitor 플러그인에도 별도의 개인정보 매니페스트가 필요한가요?

플러그인이 리포지토리의 소스 형태로 배포되는 경우, 해당 API 사용은 앱 바이너리의 일부입니다. 플러그인이 호출하는 API를 앱 매니페스트에 선언하거나, 별도의 프레임워크로 배포되는 경우 플러그인 타겟 내에 매니페스트를 추가하세요. 바이너리 Pod는 Apple의 서드파티 SDK 규칙을 준수해야 합니다.

앱의 PrivacyInfo.xcprivacy 파일만 수정해서 ITMS-91061 오류를 해결할 수 있나요?

아니요. SDK가 직접 매니페스트를 포함해야 합니다. 귀하의 파일에는 앱 자체의 처리 방식만 문서화해야 합니다.

Apple의 정책 적용 날짜는 어디에서 확인할 수 있나요?

필수 사유 API 적용 시점: 2024년 5월 1일. 나열된 SDK에 대한 서드파티 매니페스트 및 서명 규칙은 다음에서 확인할 수 있습니다. 서드파티 SDK 요구 사항.

iOS 앱 Privacy Manifest 다음 글

사용 중이라면 iOS 앱 Privacy Manifest 보안 및 컴플라이언스 계획을 세우려면, 다음 항목과 연결하세요: 암호화 암호화 구현 상세 정보: 컴플라이언스 컴플라이언스 구현 상세 정보: Capgo 보안 스캐너 Capgo Security Scanner 제품 워크플로우: Capgo 보안 Capgo Security 제품 워크플로우 및 Capgo 신뢰 센터 Capgo Trust Center 제품 워크플로우:

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.