SDK Google User Messaging Platform (UMP) — это инструмент для управления конфиденциальностью и обменом сообщениями, который поможет вам управлять настройками конфиденциальности. Подробнее см. в разделе «Конфиденциальность и обмен сообщениями» .
Предпосылки
- Android API уровня 21 или выше
Создайте тип сообщения
Создайте пользовательские сообщения, используя один из доступных типов сообщений на вкладке «Конфиденциальность и сообщения» вашего аккаунта Менеджера рекламы. UMP SDK пытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения Менеджера рекламы, заданного в вашем проекте.
Более подробную информацию см. в разделе О конфиденциальности и обмене сообщениями .
Установка с помощью Gradle
 Добавьте зависимость для Google User Messaging Platform SDK в файл Gradle уровня приложения вашего модуля, обычно app/build.gradle :
dependencies {
  implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}
 После внесения изменений в build.gradle вашего приложения обязательно синхронизируйте ваш проект с файлами Gradle.
Добавьте идентификатор приложения
 Идентификатор приложения можно найти в интерфейсе Менеджера рекламы . Добавьте его в файл AndroidManifest.xml с помощью следующего фрагмента кода: 
<manifest>
  <application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
  </application>
</manifest>
Получить информацию о согласии пользователя
Чтобы получить информацию о согласии пользователя, выполните следующие действия:
 Объявите экземпляр ConsentInformation : 
Ява
private final ConsentInformation consentInformation;
Котлин
private lateinit val consentInformation: ConsentInformation
 Инициализируйте экземпляр ConsentInformation : 
Ява
consentInformation = UserMessagingPlatform.getConsentInformation(context);
Котлин
consentInformation = UserMessagingPlatform.getConsentInformation(context)
 Вам следует запрашивать обновление информации о согласии пользователя при каждом запуске приложения с помощью requestConsentInfoUpdate() . Этот запрос проверяет следующее:
- Требуется ли согласие . Например, согласие требуется впервые или срок действия предыдущего решения о согласии истек.
- Требуется ли точка входа в параметры конфиденциальности ? Некоторые сообщения о конфиденциальности требуют, чтобы приложения позволяли пользователям изменять параметры конфиденциальности в любое время.
Ява
// 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.
  },
)
Загрузите и представьте форму сообщения о конфиденциальности
 Получив актуальную информацию о статусе согласия, вызовите метод loadAndShowConsentFormIfRequired() чтобы загрузить все формы, необходимые для получения согласия пользователя. После загрузки формы отображаются немедленно.
Ява
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
    activity,
    formError -> {
      // Consent gathering process is complete.
    });
Котлин
UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { formError ->
  // Consent gathering process is complete.
}
Параметры конфиденциальности
Некоторые формы сообщений о конфиденциальности отображаются в точке входа параметров конфиденциальности, созданной издателем, что позволяет пользователям управлять своими настройками в любое время. Подробнее о том, какие сообщения пользователи видят в точке входа параметров конфиденциальности, см. в разделе Доступные типы сообщений для пользователей .
Проверьте, требуется ли точка входа в параметры конфиденциальности.
 После вызова requestConsentInfoUpdate() проверьте getPrivacyOptionsRequirementStatus() , чтобы определить, требуется ли вашему приложению точка входа для параметров конфиденциальности. Если точка входа требуется, добавьте в приложение видимый и интерактивный элемент пользовательского интерфейса, представляющий форму для настройки параметров конфиденциальности. Если точка входа не требуется, сделайте элемент пользовательского интерфейса невидимым и интерактивным. 
Ява
/** Helper variable to determine if the privacy options form is required. */
public boolean isPrivacyOptionsRequired() {
  return consentInformation.getPrivacyOptionsRequirementStatus()
      == PrivacyOptionsRequirementStatus.REQUIRED;
}
Котлин
/** Helper variable to determine if the privacy options form is required. */
val isPrivacyOptionsRequired: Boolean
  get() =
    consentInformation.privacyOptionsRequirementStatus ==
      ConsentInformation.PrivacyOptionsRequirementStatus.REQUIRED
 Полный список статусов требований к параметрам конфиденциальности см. ConsentInformation.PrivacyOptionsRequirementStatus .
Представить форму параметров конфиденциальности
Когда пользователь взаимодействует с вашим элементом, предоставьте ему форму параметров конфиденциальности:
Ява
UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener);
Котлин
UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)
Запрос рекламы с согласия пользователя
 Прежде чем запрашивать рекламу, используйте canRequestAds() чтобы проверить, получено ли согласие пользователя: 
Ява
consentInformation.canRequestAds();
Котлин
consentInformation.canRequestAds()
Ниже перечислены места, где можно проверить, можете ли вы запрашивать рекламу при получении согласия:
- После того, как UMP SDK соберет согласие в текущем сеансе.
-  Сразу после вызова requestConsentInfoUpdate(). UMP SDK мог получить согласие в предыдущем сеансе приложения.
Если во время сбора согласия произошла ошибка, проверьте, можете ли вы запрашивать рекламу. UMP SDK использует статус согласия из предыдущего сеанса приложения.
Предотвращение избыточной работы с запросами объявлений
 При проверке canRequestAds() после получения согласия и после вызова requestConsentInfoUpdate() убедитесь, что ваша логика предотвращает избыточные запросы рекламы, которые могут привести к тому, что обе проверки вернут значение true . Например, с помощью логической переменной.
Тестирование
Если вы хотите протестировать интеграцию в своём приложении в процессе разработки, выполните следующие шаги для программной регистрации тестового устройства. Перед выпуском приложения обязательно удалите код, задающий идентификаторы тестовых устройств.
-  Вызовите requestConsentInfoUpdate().
- Проверьте вывод журнала на наличие сообщения, похожего на следующее, в котором указан идентификатор вашего устройства и порядок его добавления в качестве тестового устройства: - Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
- Скопируйте идентификатор тестового устройства в буфер обмена. 
- Измените свой код так, чтобы он вызывал - ConsentDebugSettings.Builder().TestDeviceHashedIdsи передавал список идентификаторов тестовых устройств.- Ява- ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this) .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID") .build(); ConsentRequestParameters params = new ConsentRequestParameters .Builder() .setConsentDebugSettings(debugSettings) .build(); consentInformation = UserMessagingPlatform.getConsentInformation(this); // Include the ConsentRequestParameters in your consent request. consentInformation.requestConsentInfoUpdate( this, params, // ... );- Котлин- val debugSettings = ConsentDebugSettings.Builder(this) .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID") .build() val params = ConsentRequestParameters .Builder() .setConsentDebugSettings(debugSettings) .build() consentInformation = UserMessagingPlatform.getConsentInformation(this) // Include the ConsentRequestParameters in your consent request. consentInformation.requestConsentInfoUpdate( this, params, // ... )
Навязать географию
 UMP SDK позволяет протестировать поведение приложения, как если бы устройство находилось в различных регионах, например, в ЕЭЗ или Великобритании, с помощью DebugGeography . Обратите внимание, что настройки отладки работают только на тестовых устройствах. 
Ява
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build();
ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
);
Котлин
val debugSettings = ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build()
val params = ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build()
consentInformation = UserMessagingPlatform.getConsentInformation(this)
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
)
Сбросить состояние согласия
 При тестировании приложения с помощью UMP SDK может быть полезно сбросить состояние SDK, чтобы имитировать первую установку приложения пользователем. Для этого в SDK предусмотрен метод reset() . 
Ява
consentInformation.reset();
Котлин
consentInformation.reset()
Примеры на GitHub
Полный пример интеграции UMP SDK, рассмотренный на этой странице, см. в Java BannerExample и Kotlin BannerExample .