В этом руководстве рассказывается, как передавать информацию о таргетинге в Google Mobile Ads SDK.
Чтобы посмотреть рабочий пример, скачайте демонстрационное приложение Android API.Подготовка
Прежде чем продолжить, настройте Google Mobile Ads SDK (Legacy).
RequestConfiguration
RequestConfiguration собирает информацию о таргетинге, которая применяется ко всем запросам объявлений. Доступные теги таргетинга перечислены в документации по RequestConfiguration.Builder.
Чтобы обновить конфигурацию запроса, получите конструктор из существующей конфигурации, выполните необходимые обновления и задайте его следующим образом:
Kotlin
val requestConfiguration = MobileAds.getRequestConfiguration()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration();
MobileAds.setRequestConfiguration(requestConfiguration);Чтобы изменения конфигурации запроса применялись ко всем запросам объявлений, задайте конфигурацию запроса перед инициализацией Google Mobile Ads SDK (Legacy).
Как настроить обработку с учетом возраста
Чтобы вам было проще соблюдать действующие законы в отношении конфиденциальности детей и подростков, в Google Mobile Ads SDK (Legacy) предусмотрена настройка возрастных ограничений. Настройка обработки данных с учетом возраста позволяет указать, должен ли сервис Google Mobile Ads SDK (Legacy) применять определенные меры защиты при показе рекламы детям, подросткам или пользователям неуказанного возраста.
Указать необходимость учета возраста можно с помощью метода setAgeRestrictedTreatment() в API RequestConfiguration.Builder.
В примере ниже показано, как указать, что запросы объявлений должны обрабатываться с учетом возрастных ограничений для детей.
Kotlin
val requestConfiguration =
MobileAds.getRequestConfiguration()
.toBuilder()
// Indicate that ad requests should have child age treatment.
.setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration =
MobileAds.getRequestConfiguration().toBuilder()
// Indicate that ad requests should have child age treatment.
.setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);Чтобы указать, что настройки учета возраста предназначены для подростков или не заданы, замените настройку CHILD на следующую:
TEENUNSPECIFIED
Если эта настройка включена, Google Mobile Ads SDK (Legacy) добавляет в запросы объявлений параметр tfat. Чтобы определить, какие настройки учета возраста подходят для ваших пользователей, проконсультируйтесь с юристом. Подробнее о том, как добавить в запрос объявления тег учета возраста…
Как перейти с тегов TFCD и TFUA на тег учета возраста
Настройки учета возраста заменяют устаревшие настройки .setTagForChildDirectedTreatment() (TFCD) и .setTagForUnderAgeOfConsent() (TFUA).
В таблице ниже показаны настройки TFCD и TFUA и их эквиваленты для возрастных категорий.
TFCD
TFCD |
Обработка с учетом возраста |
|---|---|
TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE |
AgeRestrictedTreatment.CHILD |
TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE |
AgeRestrictedTreatment.UNSPECIFIED |
TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED |
AgeRestrictedTreatment.UNSPECIFIED |
Значение не назначено .setTagForChildDirectedTreatment() |
AgeRestrictedTreatment.UNSPECIFIED |
| Ранее такого отчета не существовало | AgeRestrictedTreatment.TEEN |
TFUA
TFUA |
Обработка с учетом возраста |
|---|---|
TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE |
AgeRestrictedTreatment.CHILD |
TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE |
AgeRestrictedTreatment.UNSPECIFIED |
TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED |
AgeRestrictedTreatment.UNSPECIFIED |
Значение не назначено .setTagForUnderAgeOfConsent() |
AgeRestrictedTreatment.UNSPECIFIED |
| Ранее такого отчета не существовало | AgeRestrictedTreatment.TEEN |
Как тег учета возраста взаимодействует с тегами TFCD и TFUA
Если вы зададите настройки учета возраста вместе с тегами TFCD или TFUA, Google применит наиболее строгие из этих настроек.
Передача настроек учета возраста при медиации
Если вы настроили обработку данных с учетом возраста с помощью Google Mobile Ads SDK (Legacy), адаптеры медиации будут передавать сигнал об этом в сторонние SDK, используемые для медиации.
В таблице ниже перечислены версии адаптеров медиации, которые поддерживают передачу сигнала об ограничении по возрасту в сторонний SDK, используемый для медиации.
| Название адаптера медиации | Минимальная поддерживаемая версия |
|---|---|
| AppLovin | 13.6.3.0 |
| BidMachine | 3.7.1.1 |
| Bigo | 5.9.0.1 |
| Chartboost | 9.12.1.1 |
| DTExchange (Fyber) | 8.4.5.1 |
| i-mobile | 2.3.2.4 |
| InMobi | 11.3.0.1 |
| IronSource | 9.4.3.0 |
| Liftoff Monetize (Vungle) | 7.7.4.2 |
| LY (Line) | 3.1.1.1 |
| maio | 2.0.9.0 |
| Meta (Facebook) | 6.21.0.4 |
| Mintegral | 17.1.61.1 |
| Moloco | 4.10.0.0 |
| MyTarget | 5.47.1.1 |
| Pangle | 8.1.0.3.1 |
| PubMatic | 5.1.2.2 |
| Verve | 3.9.0.0 |
Настройка "Для детей"
В соответствии с законом США "О защите личных сведений детей в интернете" (COPPA) в Google Рекламе предусмотрен тег ресурса для детей. Устанавливая этот тег, вы подтверждаете, что уведомление является точным и вы уполномочены действовать от имени владельца приложения. Вы понимаете, что злоупотребление этой настройкой может привести к блокировке вашего аккаунта Google.
Разработчик приложений может указать в запросе объявления, что контент приложения предназначен для детей. Если вы укажете, что ваш контент предназначен для детей, мы отключим рекламу на основе интересов и ремаркетинговые объявления для этого запроса объявления.
Вы можете применить настройку "Контент для детей" в setTagForChildDirectedTreatment():
Вызовите
setTagForChildDirectedTreatmentсTAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE, чтобы указать, что ваш контент предназначен для детей в соответствии с законом COPPA. Это предотвращает передачу рекламного идентификатора Android (AAID).Вызовите
setTagForChildDirectedTreatmentсTAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE, чтобы указать, что ваш контент не предназначен для детей в соответствии с законом COPPA.Если вы не хотите указывать в запросах объявлений, как следует обрабатывать ваш контент в соответствии с законом COPPA, вызовите
setTagForChildDirectedTreatmentсTAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED.
В примере ниже показано, как указать, что контент предназначен для детей в соответствии с законом COPPA.
Kotlin
val requestConfiguration =
MobileAds.getRequestConfiguration()
.toBuilder()
.setTagForChildDirectedTreatment(RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration =
MobileAds.getRequestConfiguration().toBuilder()
.setTagForChildDirectedTreatment(
RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);Пользователи, не достигшие минимального возраста
.В запросе объявления можно указать, что оно предназначено для пользователей из Европейской экономической зоны (ЕЭЗ), не достигших минимального возраста. Эта функция помогает соблюдать требования Генерального регламента ЕС о защите персональных данных (GDPR). Обратите внимание, что GDPR может налагать на вас и другие юридические обязательства. Изучите рекомендации Европейского союза и проконсультируйтесь с юристом. Напоминаем, что соблюдать законы обязаны сами издатели, а инструменты Google лишь помогают в этом. Подробнее о влиянии GDPR на работу издателей…
При использовании этой функции в запрос объявления добавляется параметр TFUA (тег ресурса для лиц, не достигших минимального возраста). Этот параметр отключает функции персонализированной рекламы (в том числе ремаркетинг) для всех запросов объявлений. Он также отключает запросы сторонним поставщикам рекламных технологий, например пикселям оценки эффективности рекламы и сторонним серверам объявлений.
Как и в случае с настройками для контента, предназначенного для детей, в RequestConfiguration.Builder есть метод для установки параметра TFUA:
setTagForUnderAgeOfConsent().
Доступны следующие варианты:
Вызовите
setTagForUnderAgeOfConsent()сTAG_FOR_UNDER_AGE_OF_CONSENT_TRUE, чтобы указать, что запрос объявления предназначен для пользователей из Европейской экономической зоны (ЕЭЗ), не достигших минимального возраста. Это также предотвращает передачу рекламного идентификатора Android (AAID).Вызовите
setTagForUnderAgeOfConsent()сTAG_FOR_UNDER_AGE_OF_CONSENT_FALSE, чтобы указать, что запрос объявления не предназначен для пользователей из Европейской экономической зоны (ЕЭЗ), не достигших минимального возраста.Вызовите
setTagForUnderAgeOfConsent()сTAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED, чтобы указать, что вы не задали, нужно ли обрабатывать запрос объявления для пользователей из Европейской экономической зоны (ЕЭЗ), не достигших минимального возраста.
В примере ниже показано, как добавить тег TFUA в запросы объявлений.
Kotlin
val requestConfiguration =
MobileAds.getRequestConfiguration()
.toBuilder()
.setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration =
MobileAds.getRequestConfiguration().toBuilder()
.setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);Не рекомендуем задавать значение true для тегов, которые активируют настройку рекламных предпочтений для контента, предназначенного для детей, и setTagForUnderAgeOfConsent() одновременно, иначе приоритет будет иметь настройка контента, предназначенного для детей.
Фильтрация контента объявлений
Согласно правилам Google Play в отношении неприемлемой рекламы, которые распространяются и на связанные с объявлениями предложения, все объявления и связанные с ними предложения, показываемые в вашем приложении, должны соответствовать его возрастным ограничениям, даже если сам контент не нарушает правила Google Play.
Максимальные возрастные ограничения для рекламного контента – один из инструментов для более точного подбора содержания рекламы, которая показывается пользователям вашего приложения. Это решение помогает соблюдать правила платформы.
В приложениях можно задать максимальные возрастные ограничения для рекламного контента в запросах объявлений с помощью метода setMaxAdContentRating. В этом случае будут возвращаться объявления AdMob с возрастными ограничениями, не превышающими заданный уровень. Возможные значения для этой дополнительной информации от сети основаны на классификации ярлыков цифрового контента и должны быть одной из следующих строк:
MAX_AD_CONTENT_RATING_GMAX_AD_CONTENT_RATING_PGMAX_AD_CONTENT_RATING_TMAX_AD_CONTENT_RATING_MA
В следующем примере кода объект RequestConfiguration настроен так, чтобы возвращаемое содержание объявления соответствовало ярлыку цифрового контента не выше G:
Kotlin
val requestConfiguration =
MobileAds.getRequestConfiguration()
.toBuilder()
.setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_G)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration =
MobileAds.getRequestConfiguration().toBuilder()
.setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_G)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);Подробнее о том, как установить максимальные возрастные ограничения на уровне запроса объявления…
Условия конфиденциальности издателя (бета)
Publisher Privacy Treatment (PPT) API – это необязательный инструмент, который позволяет приложениям указывать, следует ли отключить персонализацию рекламы для всех запросов объявлений, с помощью метода setPublisherPrivacyPersonalizationState(). При использовании этой функции параметр PPT (вариант защиты конфиденциальности издателем) добавляется во все последующие запросы объявлений до конца сеанса.
По умолчанию в ответ на запросы объявлений Google предлагает персонализированную рекламу. Приведенный ниже код отключает персонализацию рекламы для всех запросов объявлений.
Kotlin
val requestConfiguration =
MobileAds.getRequestConfiguration()
.toBuilder()
.setPublisherPrivacyPersonalizationState(
RequestConfiguration.PublisherPrivacyPersonalizationState.DISABLED
)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)Java
RequestConfiguration requestConfiguration =
MobileAds.getRequestConfiguration().toBuilder()
.setPublisherPrivacyPersonalizationState(
RequestConfiguration.PublisherPrivacyPersonalizationState.DISABLED)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);Запрос объявления
Объект AdManagerAdRequest собирает информацию о таргетинге, которая будет отправлена вместе с запросом объявления.
Добавьте дополнительную информацию от сети
Дополнительная информация от сети – это дополнительные сведения, которые отправляются вместе с запросом объявления и относятся к одному источнику объявлений.
В следующем фрагменте кода для Google задается дополнительный ключ параметра collapsible со значением bottom:
Kotlin
val extras = Bundle()
extras.putString("collapsible", "bottom")
val adRequest =
AdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter::class.java, extras).build()
adView.loadAd(adRequest)Java
Bundle extras = new Bundle();
extras.putString("collapsible", "bottom");
AdRequest adRequest =
new AdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter.class, extras).build();
adView.loadAd(adRequest);Таргетинг со специальными настройками
Вы можете передавать собственные пары "ключ-значение" для таргетинга кампаний (позиций) Google Менеджера рекламы. В примере ниже в запросе объявления передается специальная пара "ключ-значение":
Kotlin
// Example: Pass custom targeting "age=25".
val newRequest = AdManagerAdRequest.Builder().addCustomTargeting("age", "25").build()Java
// Example: Pass custom targeting "age=25".
AdManagerAdRequest newRequest =
new AdManagerAdRequest.Builder().addCustomTargeting("age", "25").build();Вы можете передать несколько значений для ключа в виде списка строк. Например, вы можете настроить таргетинг на людей в возрасте от 20 до 30 лет, а не только на 25-летних.
Kotlin
.addCustomTargeting("age", listOf("24", "25", "26"))Java
.addCustomTargeting("age", Arrays.asList("24", "25", "26"))Исключение категорий
Чтобы добавить в запрос исключение категорий на уровне рекламного места, используйте метод addCategoryExclusion():
Kotlin
// Example: Exclude "automobile" and "boat" categories.
val newRequest =
AdManagerAdRequest.Builder()
.addCategoryExclusion("automobile")
.addCategoryExclusion("boat")
.build()Java
// Example: Exclude "automobile" and "boat" categories.
AdManagerAdRequest newRequest =
new AdManagerAdRequest.Builder()
.addCategoryExclusion("automobile")
.addCategoryExclusion("boat")
.build();Пример реализации исключения категорий в приложении Android API Demo можно найти в этой статье.
Идентификаторы, назначаемые издателем
Вы можете задать идентификатор, назначаемый издателем (PPID), чтобы использовать его для ограничения частоты показов, сегментирования аудитории, таргетинга, последовательной ротации объявлений и других методов управления рекламой на разных устройствах.
Пример настройки PPID:
Kotlin
val adRequest = AdManagerAdRequest.Builder().setPublisherProvidedId("AB123456789").build()Java
AdManagerAdRequest adRequest =
new AdManagerAdRequest.Builder().setPublisherProvidedId("AB123456789").build();Пример реализации идентификаторов, назначаемых издателем (PPID), в приложении Android API Demo можно найти в Справочном центре Менеджера рекламы.
Сигналы, предоставленные издателем
В запросах объявлений можно отправлять контекстные данные и данные об аудитории в виде сигналов, предоставленных издателем (PPS). Сигналы, предоставленные издателем, позволяют использовать данные о пользователях, чтобы повысить эффективность алгоритмической монетизации. Для этого нужно передавать характеристики аудитории системам назначения ставок во всех типах транзакций, используя стандартные таксономии и не предоставляя идентификаторы пользователей. Характеристики аудитории могут включать данные о поведении и интересах (Классификация аудиторий IAB 1.1) и контекстные данные (Классификация контента IAB 2.2).
Kotlin
val extras = Bundle()
// Set the demographic to an audience with an "Age Range" of 30-34 and an
// interest in mergers and acquisitions.
extras.putIntegerArrayList("IAB_AUDIENCE_1_1", arrayListOf(6, 284))
// Set the content to sedan, station wagon and SUV automotive values.
extras.putIntegerArrayList("IAB_CONTENT_2_2", arrayListOf(4, 5, 6))
val request =
AdManagerAdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter::class.java, extras).build()Java
Bundle extras = new Bundle();
// Set the demographic to an audience with an "Age Range" of 30-34 and an
// interest in mergers and acquisitions.
extras.putIntegerArrayList("IAB_AUDIENCE_1_1", new ArrayList<>(Arrays.asList(6, 284)));
// Set the content to sedan, station wagon and SUV automotive values.
extras.putIntegerArrayList("IAB_CONTENT_2_2", new ArrayList<>(Arrays.asList(4, 5, 6)));
AdManagerAdRequest request =
new AdManagerAdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter.class, extras).build();URL контента
Чтобы указать URL контента для объявлений с таргетингом на контент и обеспечения безопасности бренда, добавьте следующее:
Kotlin
val builder = AdManagerAdRequest.Builder()
builder.setContentUrl("https://www.example.com")
val request = builder.build()Java
AdManagerAdRequest.Builder builder = new AdManagerAdRequest.Builder();
builder.setContentUrl("https://www.example.com");
AdManagerAdRequest request = builder.build();Безопасность бренда (бета)
Приложения, которые показывают динамический контент, предназначенный для разных аудиторий, могут предоставлять короткий список URL:
Kotlin
val urls =
mutableListOf(
"https://www.mycontenturl1.com",
"https://www.mycontenturl2.com",
"https://www.mycontenturl3.com",
"https://www.mycontenturl4.com",
)
val requestWithContent = AdManagerAdRequest.Builder().setNeighboringContentUrls(urls).build()Java
List<String> urls =
Arrays.asList(
"https://www.mycontenturl1.com",
"https://www.mycontenturl2.com",
"https://www.mycontenturl3.com",
"https://www.mycontenturl4.com");
AdManagerAdRequest requestWithContent =
new AdManagerAdRequest.Builder().setNeighboringContentUrls(urls).build();.setNeighboringContentUrls() отличается от .setContentUrl() тем, что используется только для обеспечения безопасности бренда.