Как настроить UMP SDK

Google User Messaging Platform (UMP) SDK – это инструмент для управления настройками конфиденциальности и сообщениями. Подробнее о странице "Конфиденциальность и сообщения"…

Требования

  • Android API уровня 21 или выше.

Как создать тип сообщения

Создайте сообщение для пользователей, выбрав один из доступных типов на вкладке Конфиденциальность и сообщения в аккаунте Менеджера рекламы. UMP SDK пытается показать сообщение о конфиденциальности, созданное на основе идентификатора приложения Менеджера рекламы, который задан в вашем проекте.

Подробнее о странице "Конфиденциальность и сообщения"…

Установка с помощью Gradle

Добавьте зависимость для Google User Messaging Platform SDK в файл Gradle на уровне приложения (обычно это app/build.gradle):

dependencies {
  implementation("com.google.android.ump:user-messaging-platform:4.0.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:

Java

private final ConsentInformation consentInformation;

Kotlin

private lateinit var consentInformation: ConsentInformation

Инициализируйте экземпляр ConsentInformation:

Java

consentInformation = UserMessagingPlatform.getConsentInformation(context);

Kotlin

consentInformation = UserMessagingPlatform.getConsentInformation(context)

Запрашивайте обновление информации о согласии пользователя при каждом запуске приложения с помощью метода requestConsentInfoUpdate(). При этом проверяется следующее:

  • Требуется ли согласие. Например, если согласие запрашивается впервые или срок действия предыдущего согласия истек.
  • Нужна ли точка входа для настроек конфиденциальности. Некоторые сообщения о конфиденциальности требуют, чтобы приложения позволяли пользователям в любое время изменять настройки конфиденциальности.

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.

Kotlin


// 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(), чтобы загрузить формы, необходимые для получения согласия пользователя. После загрузки формы сразу же показываются.

Java


UserMessagingPlatform.loadAndShowConsentFormIfRequired(
    activity,
    formError -> {
      // Consent gathering process is complete.
    });

Kotlin


UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { formError ->
  // Consent gathering process is complete.
}

Настройки конфиденциальности

Некоторые формы сообщений о конфиденциальности показываются в точке входа для настроек конфиденциальности, которую создает издатель. Это позволяет пользователям в любой момент изменить свои настройки конфиденциальности. Подробнее о том, какие сообщения видят пользователи в точке входа в настройки конфиденциальности, читайте в статье Доступные типы сообщений для пользователей.

Как проверить, требуется ли точка входа для параметров конфиденциальности

После вызова requestConsentInfoUpdate() проверьте getPrivacyOptionsRequirementStatus(), чтобы определить, требуется ли для вашего приложения точка входа для настроек конфиденциальности. Если да, добавьте в приложение видимый и интерактивный элемент интерфейса, который будет открывать форму настроек конфиденциальности. Если точка доступа к настройкам конфиденциальности не требуется, сделайте элемент интерфейса невидимым и неактивным.

Java


/** Helper variable to determine if the privacy options form is required. */
public boolean isPrivacyOptionsRequired() {
  return consentInformation.getPrivacyOptionsRequirementStatus()
      == PrivacyOptionsRequirementStatus.REQUIRED;
}

Kotlin


/** Helper variable to determine if the privacy options form is required. */
val isPrivacyOptionsRequired: Boolean
  get() =
    consentInformation.privacyOptionsRequirementStatus ==
      ConsentInformation.PrivacyOptionsRequirementStatus.REQUIRED

Полный список статусов требований к настройкам конфиденциальности приведен в ConsentInformation.PrivacyOptionsRequirementStatus.

Покажите форму с настройками конфиденциальности

Когда пользователь взаимодействует с вашим элементом, покажите ему форму с настройками конфиденциальности:

Java


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener);

Kotlin


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)

Как запрашивать объявления с согласия пользователя

Прежде чем запрашивать объявления, используйте canRequestAds(), чтобы проверить, получено ли согласие пользователя:

Java

consentInformation.canRequestAds();

Kotlin

consentInformation.canRequestAds()

Ниже перечислены места, в которых можно проверить, запрашивается ли реклама во время сбора согласия.

  • После того как UMP SDK получит согласие в текущем сеансе.
  • Сразу после вызова requestConsentInfoUpdate(). Возможно, UMP SDK получил согласие в предыдущем сеансе приложения.

Если в процессе получения согласия возникает ошибка, проверьте, можете ли вы запрашивать объявления. UMP SDK использует статус согласия из предыдущего сеанса приложения.

Как избежать лишних запросов объявлений

При проверке canRequestAds() после получения согласия и вызова requestConsentInfoUpdate() убедитесь, что ваша логика предотвращает избыточные запросы объявлений, которые могут привести к тому, что обе проверки вернут true. Например, с помощью логической переменной.

Тестирование

Чтобы протестировать интеграцию в приложении во время разработки, выполните следующие действия для программной регистрации тестового устройства. Перед публикацией приложения не забудьте удалить код, который задает эти идентификаторы тестовых устройств.

  1. Позвоните в компанию " requestConsentInfoUpdate()".
  2. Найдите в журнале сообщение, похожее на приведенное ниже. В нем будет указан идентификатор устройства и инструкции по его добавлению в качестве тестового.

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
    
  3. Скопируйте идентификатор тестового устройства в буфер обмена.

  4. Измените код, чтобы вызвать ConsentDebugSettings.Builder().TestDeviceHashedIds и передать список идентификаторов тестовых устройств.

    Java

    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,
        // ...
    );
    

    Kotlin

    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. Обратите внимание, что настройки отладки работают только на тестовых устройствах.

Java

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,
    ...
);

Kotlin

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

Java

consentInformation.reset();

Kotlin

consentInformation.reset()

Примеры на GitHub

Полный пример интеграции UMP SDK, описанной на этой странице, можно найти в BannerExample на Java и BannerExample на Kotlin.