SDK платформы обмена сообщениями Google (UMP) — это инструмент для управления настройками конфиденциальности и обмена сообщениями. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Создайте тип сообщения
Создавайте сообщения для пользователей, используя один из доступных типов сообщений на вкладке «Конфиденциальность и сообщения» в вашем аккаунте AdMob. SDK UMP попытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения AdMob, заданного в вашем проекте.
Более подробную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Добавьте идентификатор приложения.
Идентификатор вашего приложения можно найти в пользовательском интерфейсе 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 :
Java
private final ConsentInformation consentInformation;
Котлин
private lateinit val consentInformation: ConsentInformation
Инициализируйте экземпляр ConsentInformation :
Java
consentInformation = UserMessagingPlatform.getConsentInformation(context);
Котлин
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.
Котлин
// 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.
});
Котлин
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;
}
Котлин
/** 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);
Котлин
UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)
Запрос рекламы с согласия пользователя.
Перед запросом рекламы используйте canRequestAds() , чтобы проверить, получили ли вы согласие пользователя:
Java
consentInformation.canRequestAds();
Котлин
consentInformation.canRequestAds()
Ниже перечислены места, где можно проверить, можно ли запрашивать рекламу, одновременно получая согласие на ее показ:
- После того, как UMP SDK получит согласие в текущей сессии.
- Сразу после вызова
requestConsentInfoUpdate(), SDK UMP мог получить согласие в предыдущей сессии приложения.
Если в процессе сбора согласия возникает ошибка, проверьте, можете ли вы запрашивать рекламу. UMP SDK использует статус согласия из предыдущей сессии приложения.
Предотвращение избыточной работы по запросу рекламы.
При проверке canRequestAds() после получения согласия и после вызова requestConsentInfoUpdate() убедитесь, что ваша логика предотвращает избыточные запросы рекламы, которые могут привести к тому, что обе проверки вернут true . Например, с помощью логической переменной.
Тестирование
Если вы хотите протестировать интеграцию в своем приложении во время разработки, выполните следующие шаги для программной регистрации тестового устройства. Обязательно удалите код, который устанавливает идентификаторы этих тестовых устройств, прежде чем выпускать приложение.
- Вызовите функцию
requestConsentInfoUpdate(). Проверьте журнал событий на наличие сообщения, похожего на следующий пример, в котором указан идентификатор вашего устройства и инструкция по его добавлению в качестве тестового устройства:
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.Скопируйте идентификатор вашего тестового устройства в буфер обмена.
Измените свой код, чтобы он вызывал метод
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, // ... );Котлин
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() . Обратите внимание, что параметры отладки работают только на тестовых устройствах.
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,
...
);
Котлин
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();
Котлин
consentInformation.reset()