<!--
{
  "availability" : [
    "iOS: 27.2.0 -",
    "iPadOS: 27.2.0 -",
    "macCatalyst: 27.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppTrackingTransparency",
  "identifier" : "/documentation/AppTrackingTransparency/ATTrackingManager/requestTrackingAuthorization(usingExpandedInterface:additionalInformationAction:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "App Tracking Transparency"
    ],
    "preciseIdentifier" : "c:objc(cs)ATTrackingManager(cm)requestTrackingAuthorizationUsingExpandedInterface:additionalInformationAction:completionHandler:"
  },
  "title" : "requestTrackingAuthorization(usingExpandedInterface:additionalInformationAction:completionHandler:)"
}
-->

# requestTrackingAuthorization(usingExpandedInterface:additionalInformationAction:completionHandler:)

Presents a modal UI that asks someone for permission to access data that your app can use to track a person or device.

```
class func requestTrackingAuthorization(usingExpandedInterface preferExpandedInterface: Bool, additionalInformationAction: (() -> Void)?, completionHandler completion: @escaping @Sendable (ATTrackingManager.AuthorizationStatus) -> Void)
```

```
class func requestTrackingAuthorization(usingExpandedInterface preferExpandedInterface: Bool, additionalInformationAction: (() -> Void)?) async -> ATTrackingManager.AuthorizationStatus
```

## Parameters

`preferExpandedInterface`

A Boolean value that requests that the system present a full-page sheet instead of a system alert.

`additionalInformationAction`

An action to perform when someone taps Additional Information; pass `nil` to omit the button.

## Discussion

This method requests authorization to access app-related data that the app can use to track the person or the device. The method augments the regular authorization request flow (see [`requestTrackingAuthorization(completionHandler:)`](/documentation/AppTrackingTransparency/ATTrackingManager/requestTrackingAuthorization(completionHandler:))) by adding functionality to the modal UI with the option of requesting a full-page sheet, Markdown-formatted text, and an optional Additional Information button.

## Display a full-page sheet

The functionality this method adds to the authorization process is available regionally, and requires the device to be located in a specific European Union country and signed in with an Apple Account with a specific EU country or region:

- France, Germany, Italy, Poland, and Romania: The system displays markdown text you supply via <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSUserTrackingMarkdownUsageDescription> in a full-page sheet regardless of what you set for `preferExpandedInterface`, and includes an Additional Information button if you supply an action.
- The European Union: The system displays markdown text in the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSUserTrackingMarkdownUsageDescription>, if you supply it. The system displays the full-page sheet if you set `preferExpandedInterface` to `true`, and includes an Additional Information button if you supply an action.

Outside of the European Union, the system doesn’t use either parameter, and presents a system alert displaying the original <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSUserTrackingUsageDescription>, which is equivalent to calling [`requestTrackingAuthorization(completionHandler:)`](/documentation/AppTrackingTransparency/ATTrackingManager/requestTrackingAuthorization(completionHandler:)).

## Handle the person’s response

When the person answers the prompt, the system calls the argument completion handler with a status object ([`ATTrackingManager.AuthorizationStatus`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus)) set to [`ATTrackingManager.AuthorizationStatus.authorized`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus/authorized) or [`ATTrackingManager.AuthorizationStatus.denied`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus/denied), depending on the person’s response.

The status is [`ATTrackingManager.AuthorizationStatus.notDetermined`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus/notDetermined) if the system dismisses the prompt without a decision from the person; in this case, your app needs to call this method again to receive an authorization answer from the person.

In some cases, the system doesn’t display the prompt and instead runs your completion handler immediately. The system doesn’t prompt the person when:

- Tracking is restricted for the device; in this case, the [`trackingAuthorizationStatus`](/documentation/AppTrackingTransparency/ATTrackingManager/trackingAuthorizationStatus) is [`ATTrackingManager.AuthorizationStatus.restricted`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus/restricted) regardless of whether the system has shown the person the prompt.
- The person disables “Allow Apps to Request to Track” (called “Allow Apps to Request to Link Your Activity Across Companies” in the European Union) in Settings > Privacy & Security > Tracking.
- An existing permission request is pending.
- Your code invokes this method through an app extension.
- The app’s state is a value other than `UIApplicationStateActive`.

## Provide additional information

If someone taps Additional Information, the sheet dismisses without recording an answer, and your `additionalInformationAction` closure runs. In your closure, present your own custom UI that provides more information to assist people in their decision making. Then call this method again to ask for permission once more.

The completion handler still runs after an Additional Information button tap, receiving [`ATTrackingManager.AuthorizationStatus.notDetermined`](/documentation/AppTrackingTransparency/ATTrackingManager/AuthorizationStatus/notDetermined), since the person hasn’t yet made a decision.

## Prompt again after a year

In the European Union, if a person answers the prompt, the system notes the date and doesn’t allow the prompt to display again until a year passes. You can make an additional request after a year whether the person approves or denies your app’s previous tracking request, unless the person disables tracking in Settings > Privacy & Security > Tracking.

## Configure the app’s target properties

To use this method, add the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSUserTrackingUsageDescription> key to your app’s target properties in Xcode.

> Important: In the European Union, if your app’s target properties in Xcode also include <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSUserTrackingMarkdownUsageDescription>, the full-page sheet uses that string instead, with support for bold text, italic text, bullet lists, and paragraph breaks.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)