The TCF consent state may be false in either of the following circumstances:
The user indicated that they do not consent to the terms of data collection that you specified in your message.
Some of the ad networks you integrated into your application are not configured into UMP.
Therefore UMP will always reject consent.
See
“Verifying Missing Networks”
to learn how to fix this.
Enabling Google UMP
Enabling Google CMP on AdMob Dashboard
So that the MAX consent flow can display the Google GDPR form, you must first create and publish the Google GDPR message on the AdMob dashboard.
To do so:
Sign in to your AdMob account at
apps.admob.com
.
Add your apps to the AdMob dashboard
, if you have not done so already.
Click
Privacy & messaging
.
Click
GDPR
.
Click
Create message
.
The
GDPR message
page opens.
Select the apps that you want to display your message:
Click
Select apps
.
Select the desired apps.
Click
Save
.
Select the languages in which you want to display your message.
In the
User consent options
section, select
Consent or Manage options
.
In the
Targeting
section, select
Countries subject to GDPR (EEA and UK)
.
Click
Continue
.
The
Edit message
page opens.
In the
Message name
field, enter a descriptive message name to help you identify the message later.
This name appears only on the
Privacy & messaging
page and is not visible to users.
Select the
Styling
tab.
Under the
Global
section, set the
Secondary color
to white (
#ffffff
).
Under the
Buttons
section, set the
Secondary color
to gray (
#6e6e6e
).
Click
Publish
.
Customize Ad Partners List
Note
In its default GDPR message, Google might not show all of your ad network partners.
If you fail to include these networks, this could adversely affect your ad revenue.
Follow the steps in this section to ensure all of your ad partners appear in the GDPR message.
To customize which ad partners show in the GDPR message:
Open the
GDPR settings
page.
Click the edit icon (
) under the
Review your ad partners
section.
Select the
Custom ad partners
toggle. Then select all of the networks that you integrated into your app.
Click
Confirm
.
Click
Save
at the bottom of the
GDPR settings
page.
Enabling MAX Terms and Privacy Policy Flow
First, add the dependency for the Google User Messaging Platform SDK to your app’s target.
Do this in your project’s
Podfile
:
In your app’s
Info.plist
, create a new key named
NSUserTrackingUsageDescription
of type
String
.
This string is how you inform your user why the app is requesting permission to use data that tracks the user or the device.
AppLovin recommends that you set its value to “This uses device info for more personalized ads and content.”
You can enable the MAX Terms and Privacy Policy Flow programmatically or by adding a settings file to application resources.
The sections below explain both of these methods.
When you submit your app to App Store Connect for review, you must notify the reviewer that you have enabled the App Tracking Transparency framework permission request for iOS 14.5+ only.
Do this in the
Review Notes
section.
If you do not do this, Apple may reject your build.
Programmatically
To enable the MAX Terms and Privacy Policy Flow programmatically, set several properties of the SDK’s
settings
object before you initialize the SDK.
The code sample below demonstrates this:
You can find your SDK key in the
Account > General > Keys
section of the AppLovin dashboard.
AppLovin-Settings.plist
To enable the MAX Terms and Privacy Policy Flow by using your app’s
AppLovin-Settings.plist
, do the following:
Add a new property list file named
AppLovin-Settings.plist
to your project’s
main target
.
In
AppLovin-Settings.plist
, create a new key named
ConsentFlowInfo
of type
Dictionary
.
Inside
ConsentFlowInfo
add the following key/value pairs:
A
Boolean
with the key
ConsentFlowEnabled
and the value
YES
.
A
String
with the key
ConsentFlowPrivacyPolicy
and the value of your Privacy Policy URL.
Optionally, a
String
with the key
ConsentFlowTermsOfService
and the value of your Terms of Service URL.
Optionally, a
Boolean
with the key
ConsentFlowShowTermsAndPrivacyPolicyAlertInGDPR
and the value
YES
to show the Terms and Privacy Policy alert in GDPR region before the Google UMP flow.
The final result should look similar to this:
Integration
The SDK presents the consent flow when you initialize the SDK.
When the user completes the flow, the SDK calls your initialization-completion callback.
Caution
You must wait until the user finishes the consent flow before you initialize third-party SDKs (such as MMPs or analytics SDKs).
For this reason, initialize such SDKs from within your initialization-completion callback.
If you initialize third-party SDKs before the user completes the consent flow, these third-party SDKs cannot access relevant identifiers.
Therefore you would suffer a material impact on measurement, reporting, and ad revenue.
Do not initialize MAX mediated network SDKs in your initialization callback.
MAX performs this initialization automatically.
If you set the user ID in your MMP integration, set it where you set the AppLovin user ID.
The code snippets below use Adjust as an example.
Refer to Adjust’s documentation to learn
how to initialize Adjust
and
set the user ID
.
Localizing NSUserTrackingUsageDescription
The table below gives you an English (base) description and a variety of localizations that you can use at your discretion.
Read the
Documentation > Xcode > Localization
instructions to learn how to localize your app.
Locale
String
English (base)
This uses device info for more personalized ads and content
Chinese Simplified (ZhHans)
我们使用设备信息来提供个性化的广告和内容。
Chinese Traditional (ZhHant)
我們使用設備信息來提供個性化的廣告和內容。
French (fr)
Cela permet d’utiliser les informations du téléphone pour afficher des contenus publicitaires plus pertinents.
German (de)
Dies benutzt Gerätinformationen für relevantere Werbeinhalte
Japan (Ja)
これはユーザーデータをもとに、より関連性の高い広告コンテンツをお客様に提供します
Korean (Ko)
보다 개인화된 광고 및 콘텐츠를 위해 기기 정보를 사용합니다.
Spanish (es)
Esto utiliza la información del dispositivo para anuncios y contenido más personalizados
Show GDPR Flow to Existing Users
AppLovin recommends that you allow existing users in GDPR regions to reenter the GDPR flow.
Typically, users do this in your app’s
Settings
section via an option to
Manage Existing Privacy Settings
.
You can determine if a user is within a GDPR region with the SDK API
ALSdkConfiguration.consentFlowUserGeography
.
The user is in GDPR region when
consentFlowUserGeography
is
ALConsentFlowUserGeographyGDPR
.
If so, you can conditionally show that settings option to the user.
When the user clicks
Manage Existing Privacy Settings
(or its equivalent), call
-[ALCMPService showCMPForExistingUserWithCompletion]
.
This resets the user’s existing consent information.
Testing
If you want to test the Google CMP outside the GDPR region, set the debug user geography by using one of the techniques shown below:
Programmatically
To set the debug user geography to GDPR use code like the following:
AppLovin-Settings.plist
To set the debug user geography, add the
ConsentFlowDebugUserGeography
key with string value
gdpr
under the
ConsentFlowInfo
object:
Verifying Installation
Under the
Privacy
section of the MAX Mediation Debugger, the
CMP (Consent Management Platform)
row displays the name of the Google-certified CMP SDK that you integrated.
If you successfully integrated the Google UMP SDK, it displays “Google consent management solutions” as the name.
Verifying IAB TCF Parameters
If you select the
CMP (Consent Management Platform)
row, you can inspect the IAB TCF parameters
IABTCF_gdprApplies
,
IABTCF_TCString
, and
IABTCF_AddtlConsent
.
For the latter two, you can click on the row to copy or share its value.
Verifying Missing Networks
In the
CMP CONFIGURATION
section, you can verify which networks are integrated with or are missing from your Google UMP configuration.
This is an exhaustive list of all networks that are available to MAX.
You can ignore any networks that you did not integrate in your application.
On your CMP flow you must list all of the networks that you integrate in your application.
To check if any of those networks are missing, and to fix this problem:
Complete the CMP flow, granting consent to all networks.
Open the
Mediation Debugger
.
The Mediation Debugger parses the TC and AC strings and displays two lists:
Integrated networks you listed on your CMP flow
Networks that are missing which you might need to add (under
Configured CMP Networks
in the
CMP CONFIGURATION
section)
You will see missing networks in the
MISSING ATP NETWORKS
or
MISSING TCF VENDORS
lists.
If any of these are networks that you integrated into your application:
Return to your CMP’s dashboard.
Add the missing networks to those covered by the GDPR message.
(See
Customize Ad Partners List
for how to do this in Google’s Unified Consent Flow.)
Restart your app.
Repeat these steps until you verify that all of your networks are correctly included in the CMP flow.
To view the consent statuses of all networks, expand
Network Consent Statuses
in the Mediation Debugger.
The Mediation Debugger parses the TC string and displays the consent statuses of all networks.
It also displays the AppLovin consent status that it parses from the AC string that Google UMP generates.