Skip to main content

Privacy manifest

Last updated 08/27/2026

Background​

At WWDC23, Apple introduced a new privacy manifest policy. Starting from spring 2024, if your new app or app update adds a third-party SDK that is commonly used in apps on the App Store, you need to include the privacy manifest of that SDK.

Data collection SDK adaptation​

The iOS data collection SDK provides a privacy manifest starting from v3.0.2-beta.2.

iOS integration​

1. CocoaPods integration​

Import the SDK directly. The privacy manifest is included automatically, so you don't need to handle it manually.

pod 'ThinkingSDK', '>= 3.0.2'

2. Framework integration​

The .xcframework library of the iOS data collection SDK already contains the privacy manifest file, but the library isn't signed. If you need a signature, sign it yourself with an appropriate certificate.

  1. Download and unzip the iOS SDK
  2. Drag ThinkingSDK.xcframework and ThinkingDataCore.xcframework into your XCode Project Workspace
  3. Find Targets, and add -ObjC to the Other linker flags option in the Build Settings menu

Game engine integration​

Handle the privacy manifest file manually​

  1. The game engine editor automatically builds an Xcode project

  2. In this Xcode project, create the privacy manifest file for your own project. For details, see Apple privacy manifest specification

  3. Download the privacy manifest file of the ThinkingData data collection SDK (see the appendix)

  4. Manually merge the data in the privacy manifest file of the ThinkingData data collection SDK into the privacy manifest of your project

    1. Copy each item under NSPrivacyCollectedDataTypes in the appendix to the corresponding key in the PrivacyInfo.xcprivacy file of your app project
    2. Copy each item under NSPrivacyAccessedAPITypes to the corresponding key in the PrivacyInfo.xcprivacy file of your app project

Cross-platform framework integration​

Handle the privacy manifest file manually​

  1. The editor of the cross-platform framework (for example, Flutter or RN) automatically builds an Xcode project

  2. In this Xcode project, create the privacy manifest file for your own project. For details, see Apple privacy manifest specification

  3. Download the privacy manifest file of the ThinkingData data collection SDK (see the appendix)

  4. Manually merge the data in the privacy manifest file of the ThinkingData data collection SDK into the privacy manifest of your project

    1. Copy each item under NSPrivacyCollectedDataTypes in the appendix to the corresponding key in the PrivacyInfo.xcprivacy file of your app project
    2. Copy each item under NSPrivacyAccessedAPITypes to the corresponding key in the PrivacyInfo.xcprivacy file of your app project

Appendix​

Privacy manifest of the ThinkingData data collection SDK. The file name is PrivacyInfo.xcprivacy

<?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>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeCrashData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePerformanceData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeCoarseLocation</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeUserID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>1C8F.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
<string>7D9E.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Was this page helpful?