2

How can I add App Tracking Transparency (ATT) to maui app on IOS?

I added this code to MainPage.xaml

protected override void OnAppearing()
{
    base.OnAppearing();

    // Prompt the user for tracking authorization
    ATTrackingManager.RequestTrackingAuthorization(async (status) =>
    {
        string message = "";
        // Handle the user's authorization status here
        switch (status)
        {
            case ATTrackingManagerAuthorizationStatus.Authorized:
                message = "Authorized";
                await Application.Current.MainPage.DisplayAlert("Authorization Status", message, "OK");
                break; 

            case ATTrackingManagerAuthorizationStatus.Denied:
                message = "Denied";
                await Application.Current.MainPage.DisplayAlert("Authorization Status", message, "OK");
                break; 

            case ATTrackingManagerAuthorizationStatus.Restricted:
                message = "Restricted";
                await Application.Current.MainPage.DisplayAlert("Authorization Status", message, "OK");
                break; 

            case ATTrackingManagerAuthorizationStatus.NotDetermined:
                message = "NotDetermined";
                await Application.Current.MainPage.DisplayAlert("Authorization Status", message, "OK");
                break; 
        }
    });
}

and this code to info.plist

<key>NSUserTrackingUsageDescription</key>
<string>This app uses data to deliver personalized advertising.</string>

and it still doesn't work. I don't get any error. but the message is not displayed.

Edit: I expected to get message like this

https://support.apple.com/en-in/HT212025

Ihor Kostrov
  • 2,361
  • 14
  • 23

3 Answers3

2

According to this issue which is about Xamarin App Tracking Transparency Dialog does not appear since iOS 15, you can try to put the code into the /Platforms/iOS/AppDelegates.cs. Such as:

public override void OnActivated(UIApplication application)
      {
            base.OnActivated(application);
        ATTrackingManager.RequestTrackingAuthorization(async (status) =>
        {
            string message = "";
            // Handle the user's authorization status here
            switch (status)
            {
                case ATTrackingManagerAuthorizationStatus.Authorized:
                    message = "Authorized";
                    break;

                case ATTrackingManagerAuthorizationStatus.Denied:
                    message = "Denied";
                    break;

                case ATTrackingManagerAuthorizationStatus.Restricted:
                    message = "Restricted";
                    break;

                case ATTrackingManagerAuthorizationStatus.NotDetermined:
                    message = "NotDetermined";
                    break;
            }
        });
    }

I have tested this in my project, and the alert about requesting permission will show up.

Liyun Zhang - MSFT
  • 8,271
  • 1
  • 2
  • 14
0

As an addition to the info provided above here is how you then check the permission in one of your .cs files:

#if IOS
    using AppTrackingTransparency;
#endif

#if IOS
    ATTrackingManagerAuthorizationStatus status = ATTrackingManager.TrackingAuthorizationStatus;
    trackingOn = (status == ATTrackingManagerAuthorizationStatus.Authorized);
#endif
gadildafissh
  • 2,243
  • 1
  • 21
  • 26
-2

I have tried several methods, some from the Xamarin documentation, but I still can't get the message to display in MAUI.

@Matan, did you get it to work?