Get started

Select platform: Android iOS Unity Flutter

The Google User Messaging Platform (UMP) SDK is a privacy and messaging tool to help you manage privacy choices. For more information, see About Privacy & messaging .

Create a message type

Create user messages with one of the Available user message types under the Privacy & messagingtab of your AdMob account. The UMP SDK attempts to display a privacy message created from the AdMob Application ID set in your project.

For more details, see About privacy and messaging .

You should request an update of the user's consent information at every app launch, using Update() . 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.
  void 
  
 Start 
 () 
 { 
  
 // Create a ConsentRequestParameters object. 
  
 ConsentRequestParameters 
  
 request 
  
 = 
  
 new 
  
 ConsentRequestParameters 
 (); 
  
 // Check the current consent information status. 
  
 ConsentInformation 
 . 
 Update 
 ( 
 request 
 , 
  
 OnConsentInfoUpdated 
 ); 
 } 
 void 
  
 OnConsentInfoUpdated 
 ( 
 FormError 
  
 consentError 
 ) 
 { 
  
 // If the error is null, the consent information state was updated. 
  
 if 
  
 ( 
 consentError 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Handle the error. 
  
 UnityEngine 
 . 
 Debug 
 . 
 LogError 
 ( 
 consentError 
 ); 
  
 return 
 ; 
  
 } 
 } 
 

Load and present the privacy message form

After you have received the most up-to-date consent status, call LoadAndShowConsentFormIfRequired() to load any forms required to collect user consent. After loading, the forms present immediately.

  void 
  
 Start 
 () 
 { 
  
 // Create a ConsentRequestParameters object. 
  
 ConsentRequestParameters 
  
 request 
  
 = 
  
 new 
  
 ConsentRequestParameters 
 (); 
  
 // Check the current consent information status. 
  
 ConsentInformation 
 . 
 Update 
 ( 
 request 
 , 
  
 OnConsentInfoUpdated 
 ); 
 } 
 void 
  
 OnConsentInfoUpdated 
 ( 
 FormError 
  
 consentError 
 ) 
 { 
  
 if 
  
 ( 
 consentError 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Handle the error. 
  
 UnityEngine 
 . 
 Debug 
 . 
 LogError 
 ( 
 consentError 
 ); 
  
 return 
 ; 
  
 } 
  
 // If the error is null, the consent information state was updated. 
  
 // You are now ready to check if a form is available. 
  
 ConsentForm 
 . 
 LoadAndShowConsentFormIfRequired 
 (( 
 FormError 
  
 formError 
 ) 
  
 = 
>  
 { 
  
 if 
  
 ( 
 formError 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Consent gathering failed. 
  
 UnityEngine 
 . 
 Debug 
 . 
 LogError 
 ( 
 consentError 
 ); 
  
 return 
 ; 
  
 } 
  
 // 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, see Available user message types .

To implement a privacy options entry point, complete the following steps:

  1. After you have called Update() , check PrivacyOptionsRequirementStatus to determine if a privacy options entry point is required.
  2. If required, add a visible and interactable UI element to your app to serve as the privacy options entry point. If a privacy entry point is not required, configure your UI element to not be visible and interactable.
  3. Present the privacy options form using ShowPrivacyOptionsForm() .

The following code example demonstrates these steps:

  [SerializeField, Tooltip("Button to show the privacy options form.")] 
 private 
  
 Button 
  
 _privacyButton 
 ; 
 private 
  
 void 
  
 Start 
 () 
 { 
  
 // Enable the privacy settings button. 
  
 if 
  
 ( 
 _privacyButton 
  
 != 
  
 null 
 ) 
  
 { 
  
 _privacyButton 
 . 
 onClick 
 . 
 AddListener 
 ( 
 UpdatePrivacyButton 
 ); 
  
 // Disable the privacy settings button by default. 
  
 _privacyButton 
 . 
 interactable 
  
 = 
  
 false 
 ; 
  
 } 
 } 
 /// <summary> 
 /// Shows the privacy options form to the user. 
 /// </summary> 
 public 
  
 void 
  
 ShowPrivacyOptionsForm 
 () 
 { 
  
 Debug 
 . 
 Log 
 ( 
 "Showing privacy options form." 
 ); 
  
 ConsentForm 
 . 
 ShowPrivacyOptionsForm 
 (( 
 FormError 
  
 showError 
 ) 
  
 = 
>  
 { 
  
 if 
  
 ( 
 showError 
  
 != 
  
 null 
 ) 
  
 { 
  
 Debug 
 . 
 LogError 
 ( 
 "Error showing privacy options form with error: " 
  
 + 
  
 showError 
 . 
 Message 
 ); 
  
 } 
  
 // Enable the privacy settings button. 
  
 UpdatePrivacyButton 
 (); 
  
 }); 
 } 
 /// <summary> 
 /// Updates the privacy buttons visual state based on the consent information. 
 /// </summary> 
 void 
  
 UpdatePrivacyButton 
 () 
 { 
  
 if 
  
 ( 
 _privacyButton 
  
 != 
  
 null 
 ) 
  
 { 
  
 _privacyButton 
 . 
 interactable 
  
 = 
  
 ConsentInformation 
 . 
 PrivacyOptionsRequirementStatus 
  
 == 
  
 PrivacyOptionsRequirementStatus 
 . 
 Required 
 ; 
  
 } 
 } 
 

Request ads with user consent

Before requesting ads, use CanRequestAds() to check if you've obtained consent from the user:

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 called Update() . 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.

  void 
  
 Start 
 () 
 { 
  
 // Create a ConsentRequestParameters object. 
  
 ConsentRequestParameters 
  
 request 
  
 = 
  
 new 
  
 ConsentRequestParameters 
 (); 
  
 // Check the current consent information status. 
  
 ConsentInformation 
 . 
 Update 
 ( 
 request 
 , 
  
 OnConsentInfoUpdated 
 ); 
 } 
 void 
  
 OnConsentInfoUpdated 
 ( 
 FormError 
  
 consentError 
 ) 
 { 
  
 if 
  
 ( 
 consentError 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Handle the error. 
  
 UnityEngine 
 . 
 Debug 
 . 
 LogError 
 ( 
 consentError 
 ); 
  
 return 
 ; 
  
 } 
  
 // If the error is null, the consent information state was updated. 
  
 // You are now ready to check if a form is available. 
  
 ConsentForm 
 . 
 LoadAndShowConsentFormIfRequired 
 (( 
 FormError 
  
 formError 
 ) 
  
 = 
>  
 { 
  
 if 
  
 ( 
 formError 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Consent gathering failed. 
  
 UnityEngine 
 . 
 Debug 
 . 
 LogError 
 ( 
 consentError 
 ); 
  
 return 
 ; 
  
 } 
  
 // Consent has been gathered. 
  
  if 
  
 ( 
 ConsentInformation 
 . 
 CanRequestAds 
 ()) 
  
 { 
  
 MobileAds 
 . 
 Initialize 
 (( 
 InitializationStatus 
  
 initstatus 
 ) 
  
 = 
>  
 { 
  
 // TODO: Request an ad. 
  
 }); 
  
 } 
  
 }); 
  
 } 
 

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.

  1. Call Update() .
  2. 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:

    Android

     Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231")
    to set this as a debug device. 
    

    iOS

     <UMP SDK>To enable debug mode for this device,
    set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b] 
    
  3. Copy your test device ID to your clipboard.

  4. Modify your code to call DebugGeography.TestDeviceHashedIds and pass in a list of your test device IDs.

      void 
      
     Start 
     () 
     { 
      
     var 
      
     debugSettings 
      
     = 
      
     new 
      
     ConsentDebugSettings 
      
     { 
      
      TestDeviceHashedIds 
      
     = 
      
     new 
      
     List<string> 
      
     { 
      
     "TEST-DEVICE-HASHED-ID" 
      
     } 
      
     }; 
      
     // Create a ConsentRequestParameters object. 
      
     ConsentRequestParameters 
      
     request 
      
     = 
      
     new 
      
     ConsentRequestParameters 
      
     { 
      
     ConsentDebugSettings 
      
     = 
      
     debugSettings 
     , 
      
     }; 
      
     // Check the current consent information status. 
      
     ConsentInformation 
     . 
     Update 
     ( 
     request 
     , 
      
     OnConsentInfoUpdated 
     ); 
     } 
     
    

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, using DebugGeography . Note that debug settings only work on test devices.

  void 
  
 Start 
 () 
 { 
  
 var 
  
 debugSettings 
  
 = 
  
 new 
  
 ConsentDebugSettings 
  
 { 
  
  // Geography appears as in EEA for debug devices. 
  
 DebugGeography 
  
 = 
  
 DebugGeography 
 . 
 EEA 
 , 
  
 TestDeviceHashedIds 
  
 = 
  
 new 
  
 List<string> 
  
 { 
  
 "TEST-DEVICE-HASHED-ID" 
  
 } 
  
 }; 
  
 // Create a ConsentRequestParameters object. 
  
 ConsentRequestParameters 
  
 request 
  
 = 
  
 new 
  
 ConsentRequestParameters 
  
 { 
  
 ConsentDebugSettings 
  
 = 
  
 debugSettings 
 , 
  
 }; 
  
 // Check the current consent information status. 
  
 ConsentInformation 
 . 
 Update 
 ( 
 request 
 , 
  
 OnConsentInfoUpdated 
 ); 
 } 
 

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 the Reset() method to do this.

  ConsentInformation 
 . 
 Reset 
 (); 
 

Examples on GitHub

See a full example of the UMP SDK integration covered in this page in HelloWorld .

Create a Mobile Website
View Site in Mobile | Classic
Share by: