Начать

SDK Google User Messaging Platform (UMP) – это инструмент конфиденциальности и обмена сообщениями, который поможет вам управлять настройками конфиденциальности. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .

Предварительные условия

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

Создайте тип сообщения

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

Дополнительные сведения см. в разделе О конфиденциальности и обмене сообщениями .

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

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

dependencies {
  implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}

После внесения изменений в build.gradle вашего приложения обязательно синхронизируйте свой проект с файлами Gradle.

Добавьте идентификатор приложения

Идентификатор вашего приложения можно найти в пользовательском интерфейсе AdMob . Добавьте идентификатор в свой 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 . Например, с логической переменной.

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

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

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

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

  4. Измените свой код так, чтобы он вызывал 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 предоставляет возможность протестировать поведение вашего приложения, как если бы устройство находилось в различных регионах, например в ЕЭЗ или Великобритании, с помощью setDebugGeography() . Обратите внимание, что настройки отладки работают только на тестовых устройствах.

Ява

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 .

,

SDK Google User Messaging Platform (UMP) – это инструмент конфиденциальности и обмена сообщениями, который поможет вам управлять настройками конфиденциальности. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .

Предварительные условия

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

Создайте тип сообщения

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

Дополнительные сведения см. в разделе О конфиденциальности и обмене сообщениями .

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

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

dependencies {
  implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}

После внесения изменений в build.gradle вашего приложения обязательно синхронизируйте свой проект с файлами Gradle.

Добавьте идентификатор приложения

Идентификатор вашего приложения можно найти в пользовательском интерфейсе AdMob . Добавьте идентификатор в свой 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 . Например, с логической переменной.

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

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

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

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

  4. Измените свой код так, чтобы он вызывал 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 предоставляет возможность протестировать поведение вашего приложения, как если бы устройство находилось в различных регионах, например в ЕЭЗ или Великобритании, с помощью setDebugGeography() . Обратите внимание, что настройки отладки работают только на тестовых устройствах.

Ява

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 .