Таргетинг

В этом руководстве рассказывается, как передавать информацию о таргетинге в Google Mobile Ads SDK.

Подготовка

Прежде чем продолжить, настройте GMA Next-Gen SDK.

RequestConfiguration

RequestConfiguration собирает информацию о таргетинге, которая применяется ко всем запросам объявлений. Доступные теги таргетинга перечислены в документации по RequestConfiguration.Builder.

Создайте объект RequestConfiguration с нужными тегами таргетинга, используя его конструктор, а затем задайте конфигурацию, вызвав MobileAds.setRequestConfiguration().

Kotlin

val requestConfiguration = RequestConfiguration
  .Builder()
  // Set your targeting tags.
  .setTagForChildDirectedTreatment(RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
  .build()

MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
  .Builder()
  // Set your targeting tags.
  .setTagForChildDirectedTreatment(TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
  .build();

MobileAds.setRequestConfiguration(requestConfiguration);

Чтобы применить теги таргетинга из первого запроса объявления, укажите конфигурацию запроса во время инициализации SDK:

Kotlin

val requestConfiguration = RequestConfiguration
  .Builder()
  // Set your targeting tags.
  .setTagForChildDirectedTreatment(RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
  .build()

CoroutineScope(Dispatchers.IO).launch {
  // Initialize GMA Next-Gen SDK on a background thread.
  MobileAds.initialize(
    this@MainActivity,
    InitializationConfig
      // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
      .Builder("SAMPLE_APP_ID")
      .setRequestConfiguration(requestConfiguration)
      .build()
  ) {
    // Adapter initialization is complete.
  }
  // Other methods on MobileAds can now be called.
}

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
    .Builder()
    // Set your targeting tags.
    .setTagForChildDirectedTreatment(TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
    .build();

new Thread(
    () -> {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(
          this,
          // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
          new InitializationConfig
              .Builder("SAMPLE_APP_ID")
              .setRequestConfiguration(requestConfiguration)
              .build(),
          initializationStatus -> {
            // Adapter initialization is complete.
          });
      // Other methods on MobileAds can now be called.
    })
    .start();

Как настроить обработку с учетом возраста

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

Вы можете задать возрастные ограничения с помощью метода setAgeRestrictedTreatment() в API RequestConfiguration.Builder.

В примере ниже показано, как указать, что запросы объявлений должны обрабатываться с учетом возрастных ограничений для детей.

Kotlin

val requestConfiguration =
  RequestConfiguration.Builder()
    // Indicate that ad requests should have child age treatment.
    .setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD)
    .build()
MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration =
    new RequestConfiguration.Builder()
        // Indicate that ad requests should have child age treatment.
        .setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD)
        .build();
MobileAds.setRequestConfiguration(requestConfiguration);

Чтобы указать, что настройки предназначены для подростков или пользователей неуказанного возраста, замените параметр CHILD следующим:

  • TEEN
  • UNSPECIFIED

Если эта настройка включена, GMA Next-Gen SDK добавляет в запросы объявлений параметр 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 применит наиболее строгие из этих настроек.

Передача настроек учета возраста при медиации

Если вы настроили обработку данных с учетом возраста с помощью GMA Next-Gen SDK, адаптеры медиации будут передавать сигнал об этом в сторонние 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.

Разработчик приложений может указать в запросе объявления, что контент приложения предназначен для детей. Если вы укажете, что ваш контент предназначен для детей, мы отключим рекламу на основе интересов и ремаркетинговые объявления для этого запроса объявления.

Вы можете применить настройку "Контент для детей" с помощью 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 = RequestConfiguration
  .Builder()
  .setTagForChildDirectedTreatment(RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
  .build()

MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
  .Builder()
  .setTagForChildDirectedTreatment(TagForChildDirectedTreatment.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 = RequestConfiguration
  .Builder()
  .setTagForUnderAgeOfConsent(RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
  .build()

MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
  .Builder()
  .setTagForUnderAgeOfConsent(TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE)
  .build();

MobileAds.setRequestConfiguration(requestConfiguration);

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

Фильтрация контента объявлений

Согласно правилам Google Play в отношении неприемлемой рекламы, которые распространяются и на связанные с объявлениями предложения, все объявления и связанные с ними предложения, показываемые в вашем приложении, должны соответствовать его возрастным ограничениям, даже если сам контент не нарушает правила Google Play.

Максимальные возрастные ограничения для рекламного контента – один из инструментов для более точного подбора содержания рекламы, которая показывается пользователям вашего приложения. Это решение помогает соблюдать правила платформы.

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

  • MAX_AD_CONTENT_RATING_G
  • MAX_AD_CONTENT_RATING_PG
  • MAX_AD_CONTENT_RATING_T
  • MAX_AD_CONTENT_RATING_MA

В приведенном ниже коде объект RequestConfiguration настроен так, чтобы возвращаемое содержание объявления соответствовало ярлыку цифрового контента не выше G:

Kotlin

val requestConfiguration = RequestConfiguration
  .Builder()
  .setMaxAdContentRating(RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_G)
  .build()

MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
  .Builder()
  .setMaxAdContentRating(MaxAdContentRating.MAX_AD_CONTENT_RATING_G)
  .build();

MobileAds.setRequestConfiguration(requestConfiguration);

Подробнее о том, как установить максимальные возрастные ограничения на уровне запроса объявления…

Условия конфиденциальности издателя (бета)

Publisher Privacy Treatment API – это необязательный инструмент, который позволяет приложениям указывать, следует ли отключить персонализацию рекламы для всех запросов объявлений, с помощью метода setPublisherPrivacyPersonalizationState(). При использовании этой функции параметр PPT (вариант защиты конфиденциальности издателем) добавляется во все последующие запросы объявлений до конца сеанса.

По умолчанию в ответ на запросы объявлений Google предлагает персонализированную рекламу. Приведенный ниже код отключает персонализацию рекламы для всех запросов объявлений.

Kotlin

val requestConfiguration = RequestConfiguration
  .Builder()
  .setPublisherPrivacyPersonalizationState(RequestConfiguration.PublisherPrivacyPersonalizationState.DISABLED)
  .build()

MobileAds.setRequestConfiguration(requestConfiguration)

Java

RequestConfiguration requestConfiguration = new RequestConfiguration
  .Builder()
  .setPublisherPrivacyPersonalizationState(RequestConfiguration.PublisherPrivacyPersonalizationState.DISABLED)
  .build();

MobileAds.setRequestConfiguration(requestConfiguration);

Запрос объявления

Объект AdRequest собирает информацию о таргетинге, которая будет отправлена вместе с запросом объявления.

Добавьте дополнительную информацию от сети

Дополнительная информация от сети – это дополнительные сведения, которые отправляются вместе с запросом объявления и относятся к одному источнику объявлений.

В следующем фрагменте кода для Google задается дополнительный ключ параметра collapsible со значением bottom:

Kotlin

val extras = Bundle()
extras.putString("collapsible", "bottom")
val adRequest =
  NativeAdRequest.Builder("AD_UNIT_ID", listOf(NativeAd.NativeAdType.NATIVE))
    .setGoogleExtrasBundle(extras)
    .build()
NativeAdLoader.load(adRequest, adCallback)

Java

Bundle extras = new Bundle();
extras.putString("collapsible", "bottom");
NativeAdRequest adRequest =
  new NativeAdRequest.Builder("AD_UNIT_ID", Arrays.asList(NativeAd.NativeAdType.NATIVE))
    .setGoogleExtrasBundle(extras)
    .build();
NativeAdLoader.load(adRequest, adCallback);

Таргетинг со специальными настройками

Вы можете передавать собственные пары "ключ-значение" для таргетинга кампаний (позиций) Google Менеджера рекламы. В примере ниже в запросе объявления передается специальная пара "ключ-значение":

Kotlin

// Example: Pass custom targeting "age=25".
val newRequest = AdRequest.Builder("AD_UNIT_ID")
  .putCustomTargeting("age", "25")
  .build()

Java

// Example: Pass custom targeting "age=25".
AdRequest newRequest = new AdRequest.Builder("AD_UNIT_ID")
  .putCustomTargeting("age", "25")
  .build();

Вы можете передать несколько значений для ключа в виде списка строк. Например, вы можете настроить таргетинг на людей в возрасте от 20 до 30 лет, а не только на 25-летних.

Kotlin

.putCustomTargeting("age", listOf("24", "25", "26"))

Java

.putCustomTargeting("age", Arrays.asList("24", "25", "26"));

Исключение категорий

Чтобы добавить в запрос исключение категорий на уровне рекламного места, используйте метод addCategoryExclusion():

Kotlin

// Example: Exclude "automobile" and "boat" categories.
val newRequest = AdRequest.Builder("AD_UNIT_ID")
  .addCategoryExclusion("automobile")
  .addCategoryExclusion("boat")
  .build()

Java

// Example: Exclude "automobile" and "boat" categories.
AdRequest newRequest = new AdRequest.Builder("AD_UNIT_ID")
    .addCategoryExclusion("automobile")
    .addCategoryExclusion("boat")
    .build();

Пример реализации исключений категорий в приложении Android API Demo можно найти в этой статье.

Идентификаторы, назначаемые издателем

Вы можете задать идентификатор, назначаемый издателем (PPID), чтобы использовать его для ограничения частоты показа, сегментации аудитории, таргетинга, последовательной ротации объявлений и других методов управления показом объявлений на основе аудитории на разных устройствах.

Пример настройки PPID:

Kotlin

val adRequest = AdRequest.Builder("AD_UNIT_ID")
  .setPublisherProvidedId("AB123456789")
  .build()

Java

AdRequest adRequest = new AdRequest.Builder("AD_UNIT_ID")
    .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 = AdRequest.Builder("AD_UNIT_ID")
  .setGoogleExtrasBundle(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", arrayListOf(6,284));
// Set the content to sedan, station wagon and SUV automotive values.
extras.putIntegerArrayList("IAB_CONTENT_2_2", arrayListOf(4,5,6));

AdRequest request = new AdRequest.Builder("AD_UNIT_ID")
  .setGoogleExtrasBundle(extras)
  .build();

URL контента

Чтобы указать URL контента для объявлений с таргетингом на контент и обеспечения безопасности бренда, добавьте следующее:

Kotlin

val builder = AdRequest.Builder("AD_UNIT_ID")
builder.setContentUrl("https://www.example.com")
val request = builder.build()

Java

AdRequest.Builder builder = new AdRequest.Builder("AD_UNIT_ID")
builder.setContentUrl("https://www.example.com");
AdRequest 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 = AdRequest.Builder("AD_UNIT_ID")
  .setNeighboringContentUrls(urls)
  .build()

Java

ArrayList<String> urls = new ArrayList<String>();
urls.add("https://www.mycontenturl1.com");
urls.add("https://www.mycontenturl2.com");
urls.add("https://www.mycontenturl3.com");
urls.add("https://www.mycontenturl4.com");
AdRequest requestWithContent = new AdRequest.Builder("AD_UNIT_ID")
    .setNeighboringContentUrls(urls)
    .build();

.setNeighboringContentUrls() отличается от .setContentUrl() тем, что используется только для обеспечения безопасности бренда.