Page Summary
-
Publishers must obtain user consent in the EEA for the use of cookies and personal data for ad personalization, aligning with the EU User Consent Policy, ePrivacy Directive, and GDPR.
-
Ad requests default to serving personalized ads but can be forced to serve non-personalized ads by appending
&npa=1to the ad tag using theadTagParametersproperty. -
Ad requests for users under the age of consent in the EEA can be marked with a TFUA parameter by appending
&tfua=1to the ad tag, which disables personalized advertising and third-party ad vendors for that request. -
Including the TFUA parameter overrides any applicable site-level settings for ad requests.
Under Google's EU User Consent Policy, you must make certain disclosures to your users in the European Economic Area (EEA) and obtain their consent for the use of cookies or other local storage where legally required, and for the collection, sharing, and use of personal data for ads personalization. This policy reflects the requirements of the EU ePrivacy Directive and the General Data Protection Regulation (GDPR).
Forwarding consent to the IMA SDK
By default, ad requests to Google serve personalized ads, with ad selection based on both the content of the web page or app and the history of the user visiting it. Google also supports serving non-personalized ads. Learn more about personalized and non-personalized ads
To force non-personalized ads, you can append &npa=1 to your ad tag
to specify that only non-personalized ad content should be returned.
This is accomplished with the adTagParameters property, like so:
Objective-C
- (void)requestStream { ... IMALiveStreamRequest *request = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey networkCode:kNetworkCode adDisplayContainer:adDisplayContainer videoDisplay:imaVideoDisplay]; request.adTagParameters = @{ @"npa" : @1}; [self.adsLoader requestStreamWithRequest:request]; }
Swift
func requestStream() { ... let request = IMALiveStreamRequest( assetKey: ViewController.assetKey, networkCode: ViewController.networkCode, adDisplayContainer: adDisplayContainer!, videoDisplay: imaVideoDisplay, userContext: nil) request.adTagParameters = {'npa', 1}; adsLoader?.requestStream(with: request) }
Tagging users as under the age of consent
You can mark your ad requests to receive treatment for users in the European Economic Area (EEA) under the age of consent. This feature is designed to help facilitate compliance with the General Data Protection Regulation (GDPR). Note that you may have other legal obligations under GDPR. Review the European Union's guidance and consult with your own legal counsel. Remember that Google's tools are designed to facilitate compliance and don't relieve you of any obligations under the law. To learn more about how GDPR affects you, see Tools to help publishers comply with the GDPR.
Use the tag for age treatment, tfat, parameter to tag an ad request for age
treatment. Set the tfat parameter to one of the following values depending on
the treatment you want to apply:
| Parameter Value | Meaning |
|---|---|
tfat=0 |
Unspecified |
tfat=1 |
Child treatment (equivalent to COPPA / TFCD / TFUA child mode) |
tfat=2 |
Teen treatment. This parameter disables personalization and enables teen-safe third-party creatives. |
For more information, see Tag an ad request for age treatment (TFAT).
When using this feature, IMA SDK includes the tfat parameter in the ad
request. This parameter disables
personalized advertising,
including remarketing, for that specific ad request. The tfat parameter also
disables requests to third-party ad vendors, such as ad measurement pixels and
third-party ad servers. The parameter does not affect your use of
Ad Manager key-values. Consequently, you must ensure that your use of
key-values complies with GDPR.
Including the age treatment parameter in an ad request takes precedence over any applicable site-level settings.
Because IMA SDK passes age signals using URL query parameters, you can pass
the tfat parameter through the adTagParameters property:
Objective-C
- (void)requestStream { ... IMALiveStreamRequest *request = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey networkCode:kNetworkCode adDisplayContainer:adDisplayContainer videoDisplay:imaVideoDisplay]; request.adTagParameters = @{ @"tfat" : @"1"}; [self.adsLoader requestStreamWithRequest:request]; }
Swift
func requestStream() { ... let request = IMALiveStreamRequest( assetKey: ViewController.assetKey, networkCode: ViewController.networkCode, adDisplayContainer: adDisplayContainer!, videoDisplay: imaVideoDisplay, userContext: nil) request.adTagParameters = ["tfat": "1"]; adsLoader?.requestStream(with: request) }