Сообщайте пользователям из ЕЭЗ

В соответствии с правилами Google в отношении согласия пользователей из ЕС вы должны предоставлять определенную информацию пользователям из Европейской экономической зоны (ЕЭЗ), Великобритании и Швейцарии и получать их согласие на использование файлов cookie или других средств локального хранения данных, если это требуется по закону, а также на использование персональных данных (например, рекламных идентификаторов) для показа рекламы.

Эти правила отражают требования, изложенные в Директиве ЕС о конфиденциальности и электронных средствах связи и Генеральном регламенте ЕС о защите персональных данных (GDPR).

В этом руководстве описаны действия, необходимые для поддержки запроса GDPR по спецификации IAB TCF версии 2 в UMP SDK. Оно дополняет статью Начало работы, в которой рассказывается, как запустить приложение с UMP SDK и настроить запрос. Приведенные ниже рекомендации относятся к запросу согласия по GDPR, соответствующему спецификации IAB TCF версии 2. Подробнее о том, как требования IAB влияют на запросы согласия пользователей из ЕС…

Требования

Согласно Генеральному регламенту ЕС о защите персональных данных (GDPR) у пользователей должна быть возможность в любой момент отозвать согласие. Чтобы реализовать возможность отзыва согласия, ознакомьтесь с разделом Настройки конфиденциальности.

Чтобы указать, что пользователь не достиг минимального возраста, задайте параметр setTagForUnderAgeOfConsent (TFUA). Если для TFUA задано значение true, UMP SDK не запрашивает согласие пользователя. Если у вашего приложения смешанная аудитория, задайте этот параметр для несовершеннолетних пользователей, чтобы у них не запрашивалось согласие.

В следующем примере для параметра TFUA в запросе согласия UMP задается значение true:

Java

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    (OnConsentInfoUpdateSuccessListener) () -> {
      // ...
    },
    (OnConsentInfoUpdateFailureListener) requestConsentError -> {
      // ...
    });

Kotlin

val params = ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ConsentInformation.OnConsentInfoUpdateSuccessListener {
      // ...
    },
    ConsentInformation.OnConsentInfoUpdateFailureListener {
      requestConsentError ->
      // ...
    })

Чтобы настроить запрос согласия в медиации AdMob, выполните действия, описанные в следующих разделах.

Как добавить рекламных партнеров в запросы GDPR

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

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

Источник объявлений Название партнера по рекламным технологиям
AppLovin AppLovin Corp.
BidMachine BidMachine
BIGO Ads SDK Empathy Technology Pte.Ltd. (BIGO Ads)
Chartboost Chartboost
DT Exchange DT Exchange (Fyber Monetization)
i-mobile i-mobile
InMobi InMobi
Реклама в ironSource ironSource Mobile
Liftoff Monetize Liftoff
LY Ads Network LY Ads Network
maio maio
Meta Audience Network Meta
Mintegral Mobvista/Mintegral
Moloco Ads SDK Moloco Ads
myTarget Mail.ru
Pangle Pangle DSP
PubMatic OpenWrap SDK PubMatic
Unity Ads Unity Ads
Verve HyBid SDK Verve Group

В таблице ниже показано, какие источники объявлений поддерживают передачу сигналов согласия по GDPR от платформ для запросов согласия, интегрированных со спецификацией Transparency and Consent Framework (TCF) от IAB и спецификацией Google для дополнительного согласия, в SDK источников объявлений.

Источник объявлений Минимальная поддерживаемая версия
AppLovin 12.0.0.0
BidMachine 3.3.0.0
BIGO Ads SDK 5.5.2.0
Chartboost 9.13.0.0
DT Exchange 8.3.0.0
i-mobile —1
InMobi 10.7.5.0
Реклама в ironSource 7.7.0.0
Liftoff Monetize 7.4.1.0
LY Ads Network —1
maio –1
Meta Audience Network —2
Mintegral 17.1.61.1
Moloco Ads SDK 3.5.0.0
myTarget 5.51.2.0
Pangle 7.9.0.9.0
PubMatic OpenWrap SDK 4.7.0.0
Unity Ads 4.19.0.1
Verve HyBid SDK 3.7.1.0

1 Источник объявлений не обслуживает трафик из ЕЭЗ.

2 За подробной информацией обратитесь к менеджеру по работе с партнерами Meta.

После того как согласие по GDPR получено, вы можете прочитать варианты согласия из локального хранилища в соответствии со спецификацией TCF версии 2. Ключ IABTCF_PurposeConsents указывает на согласие для каждой из целей TCF.

В приведенном ниже фрагменте кода показано, как проверить согласие для цели 1.

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  String purposeOneString = purposeConsents.charAt(0).toString();
  boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (purposeConsents?.isEmpty() == false) {
  val purposeOneString = purposeConsents.first().toString()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

Часто задаваемые вопросы

Что произойдет, если я не выполню требования к платформам для запросов согласия при показе рекламы в ЕЭЗ, Великобритании и Швейцарии?

С 16 января 2024 г. партнеры, которые не используют сертифицированную Google платформу для запросов согласия, смогут показывать пользователям из ЕЭЗ и Великобритании только ограниченную рекламу.

Требование вступит в силу 16 января 2024 г. Сначала оно будет применяться к небольшой доле трафика из Великобритании и стран ЕЭЗ, а к концу февраля – ко всему такому трафику. Чтобы ваш доход от рекламы не снизился, начните использовать сертифицированную CMP до 16 января 2024 года.

Как проверить, дал ли пользователь согласие?

Согласие не представлено одним битом, а скорее набором целей и поставщиков, как определено в спецификации IAB TCF. Критерии персонализации Google Рекламы приведены в статье Правила в отношении согласия: персонализированная и неперсонализированная реклама.

Кроме того, поставщики рекламных технологий из списка Google, которые не зарегистрированы в списке поставщиков TCF, используют для сбора согласия техническую спецификацию Google для получения дополнительного согласия. Список поставщиков рекламных технологий Google, которые ещё не зарегистрировались в организации IAB, а также их идентификаторы доступны здесь: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.

Чтобы выполнить отладку отдельного запроса объявления, используйте функцию Устранение неполадок с настройками конфиденциальности в инспекторе объявлений. Она позволяет посмотреть следующие сигналы конфиденциальности, которые передаются в запросе объявления в рамках интеграции издателя со спецификацией TCF от IAB Europe:

Ярлык инспектора объявлений Параметр запроса объявления Значение
Применяется GDPR (IABTCF_gdprApplies) gdpr Указывает, применяется ли к запросу объявления Генеральный регламент ЕС о защите персональных данных (GDPR).
Строка TC (IABTCF_TCString) gdpr_consent Строка TC. IAB предоставляет веб-инструмент, с помощью которого можно вручную декодировать значение.
Строка дополнительного согласия (IABTCF_AddtlConsent) addtl_consent Строка дополнительного согласия из технической спецификации Google.

Чтобы узнать, как программно считывать варианты согласия, ознакомьтесь с разделом Как считывать варианты согласия.

Нужно ли использовать UMP SDK от Google, чтобы соблюдать требования к CMP?

Нет, для показа рекламы вы можете использовать любую платформу из списка платформ для запросов согласия, сертифицированных Google.

Как снова показать форму согласия с помощью UMP SDK, даже если пользователь уже дал согласие?

Если пользователь уже принял решение, решение Google для управления запросами согласия не будет запрашивать новое согласие, пока строка TC не станет недействительной (например, истечет срок ее действия).

Согласно Генеральному регламенту ЕС о защите персональных данных (GDPR), у пользователей должна быть возможность в любой момент отозвать свое согласие. Чтобы реализовать возможность отзыва согласия, ознакомьтесь с настройками конфиденциальности. Чтобы снова показать форму согласия, вызовите showPrivacyOptionsForm().

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

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

Некоторые партнеры по медиации из списка поставщиков рекламных технологий Google не зарегистрированы в списке поставщиков TCF. Вместо этого эти партнеры используют технические характеристики Google для получения дополнительного согласия. Список поставщиков рекламных технологий Google, которые ещё не зарегистрировались в организации IAB, а также их идентификаторы доступны здесь: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.

UMP SDK поддерживает хранение строки ACString, что позволяет вам добавлять рекламных партнеров в опубликованные запросы GDPR, не проверяя, зарегистрированы ли эти партнеры в TCF. Если вы используете стороннюю CMP, выполните следующие действия:

  1. Убедитесь, что сторонняя CMP поддерживает хранение ACString.
  2. Добавьте каждого партнера по медиации в список поставщиков рекламных технологий, который сторонняя CMP-платформа использует для сбора согласия.
Можно ли изменить функции приложения, если пользователи не дают согласие? Разрешено ли это правилами?

Издатели могут считывать строку TCF от IAB в своих приложениях. Подробнее о том, как программно считывать варианты согласия… Издателям следует проконсультироваться с юристами, чтобы понять, какие обязательства накладывают на них действующие законы.

Почему я не вижу рекламу, если я нажимаю Выбрать настройки и даю согласие на все цели? Почему это происходит?

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

Как реализовать версию 2 строки дополнительного согласия для пользователей, которые уже дали согласие на версию 1?

Проверьте ключ IABTCF_AddtlConsent в локальном хранилище, как описано в технической спецификации Google для дополнительного согласия. Это позволит определить, дал ли пользователь согласие на строку дополнительного согласия версии 2 и нужно ли снова показывать форму согласия.

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "2~1.35.41.101~dv.9.21.81"
String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "");
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  String specACVersion = additionalConsent.charAt(0);
  boolean isACVersion2 = purposeOneString.equals("2");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "2~1.35.41.101~dv.9.21.81"
val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "")
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  val specACVersion = additionalConsent.first()
  val isACVersion2 = specACVersion == "2"
}