General Handling

Introduction to consent handling

App Tracking Transparency & IDFA

Starting with iOS 14, your application will have to ask for consent before tracking the user (App Tracking Transparency (ATT)). This request for consent can be made through the use of the App Tracking Transparency framework.

In order to provide personalized ads, ad networks make use of the device IDFA during ad calls and will retrieve it automatically if your app has requested tracking consent (and if the user has accepted). Without user consent to ATT (not requested, not granted) ad networks will not be able to provide personalized ads and hence will show less performance.

Added to ATT, apps (more precisely: their publishers and third-party library vendors) have to get consent from the users for serving personalized ads in order to comply with data protection laws such as GDPR. Applications also have to provide a button for the user to be able to change the consent settings. AATKit provides three ways of handling user consent:

Managed Consent

If you plan to use an IAB TCF compliant Consent Management Platform (CMP) that Gravite has already adapted (currently Google, Ogury), and you don’t want to care about their specific APIs, you should consider using the Managed Consent. The Managed Consent will also take care of automatically passing user consent to non IAB compliant ad networks that you use with AATKit.

Vendor Consent

If you plan to use an IAB TCF compliant Consent Management Platform (CMP) that Gravite has not yet adapted, or you want to create your own GDPR-compliant consent management and explicitly want to manage consents for different ad networks/vendors, you should consider using the Vendor Consent - specifically to pass consent to ad networks not complying with the IAB TCF (if you want to use those).

Simple Consent

If you don’t plan to use an IAB TCF compliant Consent Management Platform (CMP), or you want to create your own GDPR-compliant consent management but don’t want to explicitly consent for different ad networks/vendors, you can consider using Simple Consent. It will just manage one single consent value that is relevant for all respective ad networks/vendors.

For more general information about data protection topics, please consider visiting Gravite Landing Page.

Rule Skipping

  • This feature is disabled by default.

  • If enabled

    • AATKit skips rules for ad networks in case the user didn't grant consent for them.

    • AATKit skips rules for ad networks if the user didn't allow app tracking (see App Tracking Transparency).

  • Purpose: enable faster ad loading by skipping networks without consent which typically do not serve ads at all or very poorly paid ones.

  • To enable rule skipping:

let configuration = AATConfiguration()
...
configuration.shouldSkipRules = true
...
AATSDK.initAATKit(with: configuration)

Default list of networks to be skipped

By default, the following ad networks will be skipped when they have no consent and rule skipping is enabled:

  • Digital Turbine (ADCOLONY)

  • Admob

  • AdX

  • Amazon HB

  • Xandr (APPNEXUS)

  • Criteo SDK

  • Google AdManager (DFP)

  • Google AdManager (Direct) (DFPDIRECT)

  • Inmobi

  • Ogury

  • Verve (PUBNATIVE)

  • Magnite (RUBICON)

  • smaato

  • Teads

  • Equativ (SMARTAD)

  • Equativ (Direct) (SMARTADSERVERDIRECT)

  • YOC

  • FeedAd

  • Tappx

Modifying list of networks to be skipped

If rule skipping is enabled, by default AATKit will use the above default set of networks to be skipped if they have no consent. To change this default set and skip rules only for specific ad networks:

let configuration = AATConfiguration()
...
configuration.shouldSkipRules = true
let consent = AATSimpleConsent(nonIABConsent: .obtained)
// Skip rules only for SmartAd and Smaato
consent.setNoConsentNetworkStopSet([.SMARTAD, .SMAATO])
configuration.consent = consent
...
AATSDK.initAATKit(with: configuration)

To check if consent is OptIn or not, use the following API:

let consentOptIn = AATSDK.isConsentOptIn()

This API only returns meaningful information after the rules are downloaded.

CCPA Handling

AATKit now supports CCPA only if the CCPA consent string is found. AATKit will read and react automatically to the CCPA string changes in UserDefaults.

If both TCF and CCPA are present the TCF takes precedence.

Last updated