Google User Messaging Platform (UMP) SDK — это инструмент конфиденциальности и обмена сообщениями, который поможет вам управлять вариантами конфиденциальности. Для получения дополнительной информации см. раздел О конфиденциальности и обмене сообщениями .
Предпосылки
- Android API уровня 21 или выше
Создать тип сообщения
Создайте пользовательские сообщения с одним из доступных типов пользовательских сообщений на вкладке Конфиденциальность и сообщения вашего аккаунта AdMob. UMP SDK пытается отобразить сообщение о конфиденциальности, созданное из идентификатора приложения AdMob, установленного в вашем проекте.
Более подробную информацию см. в разделе О конфиденциальности и обмене сообщениями .
Установить с помощью 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.
Добавьте идентификатор приложения
Вы можете найти свой идентификатор приложения в пользовательском интерфейсе 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
. Например, с помощью логической переменной.
Тестирование
Если вы хотите протестировать интеграцию в своем приложении по мере разработки, выполните следующие шаги для программной регистрации вашего тестового устройства. Обязательно удалите код, который устанавливает эти идентификаторы тестовых устройств, прежде чем выпустить свое приложение.
- Вызовите
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 предоставляет способ протестировать поведение вашего приложения, как если бы устройство находилось в различных регионах, таких как ЕЭЗ или Великобритания, с помощью 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 .