민프

[IOS] App Store 출시 필수 사유 ITMS-91053: Missing API declaration 본문

[IOS]

[IOS] App Store 출시 필수 사유 ITMS-91053: Missing API declaration

민프야 2024. 3. 25. 18:00

문제


ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategorySystemBootTime. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryDiskSpace. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryUserDefaults. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
Apple Developer Relations

 

IOS 출시를 하려고 했는데 위 와 같은 메세지가 왔습니다.

 

내용을 읽어보면 

이 메시지는 애플이 2024년 5월 1일부터 새 앱이나 앱 업데이트를 업로드할 때, 앱의 코드가 특정 API(여기서는 파일 타임스탬프 관련 API)를 사용하는 이유를 설명해야 한다는 새로운 정책을 알리는 것입니다. 해결하기 위해서는 앱의 프라이버시 매니페스트 파일에 NSPrivacyAccessedAPITypes 배열을 포함시켜 해당 API 사용의 승인된 이유를 제공해야 합니다. 자세한 내용과 이 정책에 대한 자세한 설명, 필요한 이유 API 목록 및 사용 이유는 Apple Developer 문서에서 확인할 수 있습니다

 

2023 WWDC 개인정보 보호와 관련하여 나온 정책인데, 앱을 등록하거나 업데이트를 할 때 앱 리뷰 과정에서 개인정보 보호와 관련해서 추가 된 항목이고, 해당 API 사용 이유를 앱의 PrivacyInfo 파일에 설명하지 않으면, 2024년 5월부터 앱이 통과 되지 않는다고 하네요.

 


해결

1. Runner > 오른쪽 버튼 클릭 > New File (올바른 경로에 잘 만들어주셔야합니다.)

New Flie

 

2. App Privacy > Next > 파일명 : PrivacyInfo.xcprivacy > Create 클릭 > Runner에 PrivacyInfo 파일이 생성 된 것을 확인

(타겟 설정 Runner 해놓으셔야 합니다)

 

3. App Privacy Configuration 옆에 있는 "+"버튼 누르기 > Privacy Accessed API Types 추가 > 코드 보기로 전환 

 

3. 각각 API Type과 API Ressons을 선택넣어줍니다.

여기에서 만약 API Type에 일치하지 않는 API Resons을 고른다면 ITMS-91055:Invaild API resons declaration 에러가 발생하니 공식문서에서 Type에 맞는 Reason을 잘 골라서 매칭시켜주셔야 합니다.

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

 

저는 아래와 같이 넣었습니다.


참고

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

 

Describing use of required reason API | Apple Developer Documentation

Ensure your use of covered API is consistent with policy.

developer.apple.com

 

Comments