App privacy in the App Store

As of December 8, 2020, Apple requires mobile app developers to report the data types collected by their app to the App Store. This concerns, among others, third-party libraries integrated into the app.

  • The list below refers to the default AppMetrica SDK configuration. If you collect additional data or don't use the relevant features, modify the dataset as you see appropriate.
  • The AppMetrica SDK performs tracking if the IDFA is available. You need to implement the request yourself.

As of spring 2024, Apple provides a mechanism for automatic supply of all data collection and tracking information, the privacy manifest. The manifest file can be generated by the app itself or by its components.

  • Starting with version 5.1.0, the AppMetrica SDK provides all the necessary data as a privacy manifest file. We recommend upgrading to the latest SDK version to have the required data automatically added to your app's manifest. If this is impossible, use the recommendations below to manually fill out the manifest file.

Tracking

Tracking refers to the act of linking user or device data (IDs, profiles) collected from your app with third-party data for the purpose of advertising or data sharing.

By default, the AppMetrica SDK provides a tracking function. This must be reflected in the privacy manifest: NSPrivacyTracking must be set to true.

Tracking domain

The data used for tracking is sent to individual domains (specified in the NSPrivacyTrackingDomains key in the privacy manifest file):

  • tracking.appmetrica.yandex.net.
  • tracking.reserve.appmetrica.yandex.net.

According to the Apple policies, network requests to these domains will fail if the user hasn't granted tracking permission.

Disabling tracking

In some cases, you may need to disable the tracking functionality, such as when using the AppMetrica SDK in children's apps. To do this, exclude the AppMetricaAdSupport module responsible for the collection of IDs (including IDFAs).

How to exclude the "AppMetricaAdSupport" module when using children's apps.

If the module is disabled:

  • The NSPrivacyTracking key takes the false value, tracking domains aren't used.

  • IDs (NSPrivacyCollectedDataTypeDeviceID) aren't used for tracking and the NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising and NSPrivacyCollectedDataTypePurposeDeveloperAdvertising purposes.

    Note

    Exclude them when manually filling out the privacy manifest file.

Data types and their usage

The Apple policies require app developers to specify all data types used by the app and the purpose of their usage.

The AppMetrica SDK uses some of them:

Data type

Value

Usage

Tracking

Linked to users

Purpose

Location

NSPrivacyCollectedDataTypePreciseLocation

Optional*

No

No

NSPrivacyCollectedDataTypePurposeAppFunctionality

Location

NSPrivacyCollectedDataTypeCoarseLocation

Optional*

No

No

NSPrivacyCollectedDataTypePurposeAnalytics

IDs

NSPrivacyCollectedDataTypeUserID

Optional*

No

No

NSPrivacyCollectedDataTypePurposeAnalytics

IDs

NSPrivacyCollectedDataTypeDeviceID

Yes*

Yes

Yes

  • NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising
  • NSPrivacyCollectedDataTypePurposeDeveloperAdvertising
  • NSPrivacyCollectedDataTypePurposeAnalytics

Purchases

NSPrivacyCollectedDataTypePurchaseHistory

Yes*

No

No

NSPrivacyCollectedDataTypePurposeAnalytics

Usage data

NSPrivacyCollectedDataTypeProductInteraction

Yes

No

No

NSPrivacyCollectedDataTypePurposeAnalytics

Diagnostics

NSPrivacyCollectedDataTypeCrashData

Yes

No

No

NSPrivacyCollectedDataTypePurposeAppFunctionality

Diagnostics

NSPrivacyCollectedDataTypePerformanceData

Yes

No

No

NSPrivacyCollectedDataTypePurposeAppFunctionality

Diagnostics

NSPrivacyCollectedDataTypeOtherDiagnosticData

Yes

No

No

NSPrivacyCollectedDataTypePurposeAnalytics

Other data types

NSPrivacyCollectedDataTypeOtherDataTypes

Yes*

No

No

  • NSPrivacyCollectedDataTypePurposeAnalytics
  • NSPrivacyCollectedDataTypePurposeAppFunctionality

Note

If you use or pass other data from the full list to AppMetrica, you need to declare it on your own end.

Example

Private APIs

According to the Apple policy, some system API methods may only be used in strictly defined scenarios. Their usage and the reasoning behind it must be specified in the privacy manifest file.

The AppMetrica SDK uses the following keys:

NSPrivacyAccessedAPIType

NSPrivacyAccessedAPITypeReasons

Comment

NSPrivacyAccessedAPICategoryUserDefaults

CA92.1

Reading and storing the data required for the SDK to function.

NSPrivacyAccessedAPICategoryFileTimestamp

C617.1

Reading the data required for the SDK to function.

Note

If you use other APIs, declare them manually.

If you didn't find the answer you were looking for, you can use the feedback form to submit your question. Please describe the problem in as much detail as possible. Attach a screenshot if possible.

Contact support