Stay organized with collectionsSave and categorize content based on your preferences.
The Google User Messaging Platform (UMP) SDK is a privacy and messaging tool to
help you manage privacy choices. For more information, seeAbout Privacy & messaging.
You can see a working IMA implementation with the UMP SDK in theUMP sample
app.
Prerequisites
Android API level 21 or higher
Create a message type
Create user messages with one of theAvailable user message typesunder thePrivacy & messagingtab of your
Ad Manager
account. The UMP SDK attempts to display a
privacy message created from the Interactive Media Ads Application ID
set in your project.
You should request an update of the user's consent information at every app
launch, usingrequestConsentInfoUpdate(). This request checks the following:
Whether consent is required. For example, consent is required for the
first time, or the previous consent decision expired.
Whether a privacy options entry point is required. Some privacy messages
require apps to allow users to modify their privacy options at any time.
Java
// Requesting an update to consent information should be called on every app launch.consentInformation.requestConsentInfoUpdate(activity,params,()->// Called when consent information is successfully updated.requestConsentError->// Called when there's an error updating consent information.
// Requesting an update to consent information should be called on every app launch.consentInformation.requestConsentInfoUpdate(activity,params,{// Called when consent information is successfully updated.},{requestConsentError->// Called when there's an error updating consent information.},)
Load and present the privacy message form
After you have received the most up-to-date consent status, callloadAndShowConsentFormIfRequired()to load any forms required to
collect user consent. After loading, the forms present immediately.
Java
UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity,formError->{// Consent gathering process is complete.});
UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity){formError->// Consent has been gathered.}
Privacy options
Some privacy message forms are presented from a publisher-rendered privacy
options entry point, letting users manage their privacy options at any time.
To learn more about which message your users see at the privacy options
entry point, seeAvailable user message types.
Check if a privacy options entry point is required
After you have calledrequestConsentInfoUpdate(), checkgetPrivacyOptionsRequirementStatus()to
determine if a privacy options entry point is required for your app. If an entry
point is required, add a visible and interactable UI element to your app that
presents the privacy options form. If a privacy entry point is not required,
configure your UI element to be not visible and interactable.
Java
/** Helper function to determine if a privacy options entry point is required. */publicbooleanisPrivacyOptionsRequired(){returnconsentInformation.getPrivacyOptionsRequirementStatus()==PrivacyOptionsRequirementStatus.REQUIRED;}
/** Helper variable to determine if the privacy options form is required. */valisPrivacyOptionsRequired:Booleanget()=consentInformation.privacyOptionsRequirementStatus==ConsentInformation.PrivacyOptionsRequirementStatus.REQUIRED
Before requesting ads, usecanRequestAds()to check if you've
obtained consent from the user:
Java
consentInformation.canRequestAds();
Kotlin
consentInformation.canRequestAds()
Listed are the following places to check if you can request ads while gathering
consent:
After the UMP SDK gathers consent in the current session.
Immediately after you have calledrequestConsentInfoUpdate(). The UMP SDK might
have obtained consent in the previous app session.
If an error occurs during the consent gathering process, check if you can
request ads. The UMP SDK uses the consent status from the previous app session.
Prevent redundant ad request work
As you checkcanRequestAds()after gathering consent and after callingrequestConsentInfoUpdate(), ensure your logic prevents redundant ad requests that
might result in both checks returningtrue. For example, with a boolean
variable.
Testing
If you want to test the integration in your app as you're developing, follow
these steps to programmatically register your test device. Be sure to remove the
code that sets these test device IDs before you release your app.
Check the log output for a message similar to the following example, which
shows your device ID and how to add it as a test device:
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
Copy your test device ID to your clipboard.
Modify your code to callConsentDebugSettings.Builder().addTestDeviceHashedId()and pass in
a list of your test device IDs.
Java
ConsentDebugSettingsdebugSettings=newConsentDebugSettings.Builder(this).addTestDeviceHashedId("TEST-DEVICE-HASHED-ID").build();ConsentRequestParametersparams=newConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build();consentInformation=UserMessagingPlatform.getConsentInformation(this);// Include the ConsentRequestParameters in your consent request.consentInformation.requestConsentInfoUpdate(this,params,// ...);
Kotlin
valdebugSettings=ConsentDebugSettings.Builder(this).addTestDeviceHashedId("TEST-DEVICE-HASHED-ID").build()valparams=ConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build()consentInformation=UserMessagingPlatform.getConsentInformation(this)// Include the ConsentRequestParameters in your consent request.consentInformation.requestConsentInfoUpdate(this,params,// ...)
Force a geography
The UMP SDK provides a way to test your app's behavior as though the device
were located in various regions, such as the EEA or UK, usingDebugGeography. Note that debug settings only work on test devices.
Java
ConsentDebugSettingsdebugSettings=newConsentDebugSettings.Builder(this).setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA).addTestDeviceHashedId("TEST-DEVICE-HASHED-ID").build();ConsentRequestParametersparams=newConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build();consentInformation=UserMessagingPlatform.getConsentInformation(this);// Include the ConsentRequestParameters in your consent request.consentInformation.requestConsentInfoUpdate(this,params,...);
Kotlin
valdebugSettings=ConsentDebugSettings.Builder(this).setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA).addTestDeviceHashedId("TEST-DEVICE-HASHED-ID").build()valparams=ConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build()consentInformation=UserMessagingPlatform.getConsentInformation(this)// Include the ConsentRequestParameters in your consent request.consentInformation.requestConsentInfoUpdate(this,params,...)
Reset consent state
When testing your app with the UMP SDK, you might find it helpful to reset the
state of the SDK so that you can simulate a user's first install experience.
The SDK provides thereset()method to do this.
Java
consentInformation.reset();
Kotlin
consentInformation.reset()
Examples on GitHub
See a full example of the UMP SDK integration covered in this page inUmpExample.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThe Google User Messaging Platform (UMP) SDK helps manage user privacy choices and display relevant messages regarding data collection within your Android app.\u003c/p\u003e\n"],["\u003cp\u003eTo integrate the UMP SDK, install it via Gradle, add your Ad Manager application ID to your AndroidManifest.xml, and then request and present the consent form to users.\u003c/p\u003e\n"],["\u003cp\u003eYou must request consent information at every app launch and load any necessary forms for user consent, ensuring to check if consent has been obtained before making ad requests using \u003ccode\u003ecanRequestAds()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor apps requiring a privacy options entry point, the UMP SDK allows you to implement a UI element that triggers the display of the privacy options form for users to manage their choices.\u003c/p\u003e\n"],["\u003cp\u003eDuring development and testing, you can programmatically register test devices, simulate different geographic locations, and reset the consent state to replicate various user scenarios.\u003c/p\u003e\n"]]],[],null,[]]