He is Troubleshooting the iOS Privacy Manifest

Required Reason API: Troubleshooting your iOS Privacy Manifest file PrivacyInfo.xcprivacy

Do you need a Privacy Manifest for your app but have no clue where to start? You’ve created the Privacy Manifest and encountered issues? You’ve come to the right place. Encountering obstacles in implementing the Required Reason API for the iOS Privacy Manifest (PrivacyInfo.xcprivacy) is not uncommon.

In this continuously updated article we compile issues and solutions concerning iOS Privacy Manifest and the Required Reason API

If you haven’t created a Privacy Manifest for your iOS app yet, read this article.

If you’ve encountered a problem that hasn’t been mentioned here, write it in the comments, and we’ll address it.

Common problems

What is the quickest and easiest way to create a Privacy Manifest for my iOS app?

Answer: There are now Privacy Manifest generators available online:

Both are functional and expedite the process effectively.

3rd-Party Library does not provide a privacy manifest

“A third-party library uses the ‘Required Reason API’ but does not provide a Privacy Manifest — How can I still publish the app?”

Answer: If there is no new version of the third-party SDK available with a PrivacyInfo.xcprivacy file you must add the reasons to your app’s privacy manifest. Ensure that the provided justification is accurate.

The app doesn’t seem to be using the Privacy Manifest

I have created the file PrivacyInfo.xcprivacy but AppStore Connect still complains that the app uses an API that requires a reason.

Solution: Make sure you have added the file to the build target so that it is also available in the IPA.

Common Error Messages

Error: Missing an expected key: ‘NSPrivacyCollectedDataTypes’

Solution: You need to add so called “nutrition label” entries e.g. NSPrivacyCollectedDataTypePurchaseHistory the NSPrivacyCollectedDataTypes to your privacy manifest

For details see Apples documentation on how to describe data use in privacy manifests

Heres an example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePurchaseHistory</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<true/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeSearchHistory</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<true/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string>
</array>
</dict>
</array>
</dict>
</plist>

Error: ’Multiple commands produce PrivacyInfo.xcprivacy’ (when using a third party library via cocoapods)

Solution: The problem seems to appear when using 3rd party cocoapods which include a PrivacyInfo.xcprivacy file.

The problem must be solved by the developer of the 3rd party lib by changing the podspec:
Change:

sp.resource = “Sources/Resources/PrivacyInfo.xcprivacy”

to

sp.resource_bundles = { “Podname” => “Sources/Resources/PrivacyInfo.xcprivacy” }

“Starting February 12, 2025, if a new app includes a commonly used third-party SDK, or an app update adds a new commonly used third-party SDK, the SDK must include a privacy manifest file or you won’t be able to submit the app for review in App Store Connect.”

Please correct the following issues and upload a new binary to App Store Connect.

For Example:

ITMS-91061: Missing privacy manifest — Your app includes “Frameworks/Reachability.framework/Reachability”, which includes Reachability, an SDK that was identified in the documentation as a commonly used third-party SDK. Starting February 12, 2025, if a new app includes a commonly used third-party SDK, or an app update adds a new commonly used third-party SDK, the SDK must include a privacy manifest file or you won’t be able to submit the app for review in App Store Connect. Please contact the provider of the SDK that includes this file to get an updated SDK version with a privacy manifest. For more details about this policy, including a list of SDKs that are required to include signatures and manifests, visit: https://developer.apple.com/support/third-party-SDK-requirements.

Apple Developer Relations

Solution:
Update the “Reachabilty” (or whatever library is mentioned in the message provided by Apple)-3rd Party Library that is included in your App (probably via SPM or cocoapods).

Closing Thoughts: Engage with Us to Solve Your iOS Privacy Manifest Issues

Your feedback and questions are invaluable in enhancing this resource for all developers. If you have encountered any issues or have questions not covered in this article, don’t hesitate to share them in the comments below. Together, we can continue to refine our understanding and ensure smooth sailing in iOS app development. Your contributions are greatly appreciated!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Jochen Holzer
Jochen Holzer

Written by Jochen Holzer

"Seasoned (iOS) Engineer. Expert in the Apple Universe, Mobile DevOps and App Maintenance.

Responses (6)

Write a response

Hi, put the following XML at the head of your privacy manifest file after the <PLIST>-Tag - then regenerate the report - does this work?:
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCo

I create a PrivacyInfo.xcprivacy,there has any method to know it is right or wrong
how to check PrivacyInfo.xcprivacy right or wrong

The privacy manifest from third party sdks not being included in the privacy manifest pdf.
Any idea why ?