iOS 14 Privacy- App Tracking Transparency (Everything you need to know)

Mayur Kothawade
4 min readMar 31, 2021

This article will help you provide fearless iOS 14 support for your business

Every business is worried about iOS 14 support and the announcement made by Apple which says…

Starting soon, with Apple’s next beta update, App Tracking Transparency will require apps to get the user’s permission before tracking their data across apps or websites owned by other companies. Under Settings, users will be able to see which apps have requested permission to track, and make changes as they see fit. This requirement will roll out broadly in early spring with an upcoming release of iOS 14, iPadOS 14, and tvOS 14, and has already garnered support from privacy advocates around the world.

Let us clear the background first

Background…

There are several identifiers which iOS expose to developers such as

  1. Universal Identifiers (UDID)

In the early days of iOS, Apple provided a uniqueIdentifier property on UIDevice — affectionately referred to as a udid (not to be confused with a UUID). Although such functionality seems unthinkable today, that property existed until iOS 5, until it was deprecated and replaced by identifierForVendor in iOS 6.

2. Vendor Identifiers (IDFV)

Starting in iOS 6, developers can use the identifierForVendor property on UIDevice to generate a unique identifier that’s shared across apps and extensions created by the same vendor (idfv)

let idfv = UIDevice.current.identifierFor

3. Advertising Identifiers (IDFA)

Along with identifierForVendor came the introduction of a new AdSupport framework, which Apple created to help distinguish identification necessary for app functionality from anything in the service of advertisement.

The resulting advertisingidentifier property (idfa) differs from identifierForVendor by returning the same value for everyone. The value can change, only if the user resets their Advertising Identifier or erases their device.

import AdSupport

let idfa = ASIdentifierManager.shared().advertisingIdentifier

If advertising tracking is limited, the property returns a zeroed-out UUID instead.

>po idfa.uuidString 
>00000000-0000-0000-0000-000000000000

Limit Ad tracking option is available currently in settings.

Limit Ad Tracking

So this was till today…

Utilisation of IDFA

You must have experienced searching for some products online on your laptop and next day the ads related to same products (or show you some personalised products on your e-commerce app) seen in social app in your mobile device, So this is the same IDFA which is responsible for achieving this thing.

So now you can guess what Apple must have done in iOS 14 to make all advertisement based businesses unhappy.

Now in iOS 14 onwards,

Yes your guess is correct, Developer has to take user’s consent before tracking user’s data means before accessing the same IDFA.

So no change in accessing mechanism but there is new API introduced to ask user’s consent.

Here we go…

  1. Put NSUserTrackingUsageDescription in info.plist to display a system-permission alert request for your app installed on end-user devices.

2. Call below function to present the app-tracking authorization request to the end user.

ATTrackingManager.requestTrackingAuthorization { (status) in
// Handle status here
}

Below are the status:

If the status is authorized then we can fetch IDFA using old API as we saw earlier, In any other cases of status, it would return 0000.. for IDFA.

Along with this there was one more API developer used to call before accessing IDFA which is

import AdSupport
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
}

But from iOS 14 onwards isAdvertisingTrackingEnabled API has been deprecated, So make sure to replace this API with following

import AdSupport
import AppTrackingTransparency
if ATTrackingManager.trackingAuthorizationStatus == .authorized {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
}

That solves the iOS 14 problem from developer perspective

How about businesses ?

Many businesses are moving from specific user tracking to something called differential privacy using machine learning (but it requires big data to achieve perfect results).

You can read more about Differential Privacy at https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf

Read more about App Tracking Transparency at https://developer.apple.com/documentation/apptrackingtransparency

Thanks a lot if you have read till this line, please clap if you like the article and re-share to remove the fear of iOS 14 from other people too.

Take a look at my other article as well

Thank you

--

--

Mayur Kothawade

Building Mobile App that challenges creativity and innovation.