Запрос согласия от европейских пользователей

Предварительные условия

Завершите начало работы с версией 1.3.0 плагина GMA Flutter, который поддерживает SDK платформы обмена сообщениями пользователей.

ПрочтитеКак требования IAB влияют на сообщения о согласии в ЕС .

Введение

UMP SDK предоставляет издателям инструменты для запроса согласия на персонализированную рекламу, а также для выполнения требований Apple по прозрачности отслеживания приложений (ATT). Издатели могут использовать UMP SDK для обработки одного или обоих этих запросов, показывая одну форму, поскольку вся настройка происходит вКонфиденциальность и обмен сообщениями AdMob .

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

Чтобы помочь издателям выполнять свои обязанности в соответствии с этой политикой, Google предлагает SDK User Messaging Platform (UMP). UMP SDK был обновлен для поддержки новейших стандартов IAB. Мы также упростили процесс настройки форм согласия и перечисления рекламных партнеров. Всеми этими конфигурациями теперь можно удобно управлять вКонфиденциальность и сообщения AdMob .

В этом руководстве рассказывается, как установить SDK, внедрить решения IAB и включить функции тестирования.

Прозрачность отслеживания приложений (только для iOS)

Если вы планируете использовать UMP SDK для выполнения требований Apple по прозрачности отслеживания приложений, убедитесь, что вы создали, настроили и опубликовали сообщение ATT с помощьюКонфиденциальность и сообщения AdMob .

Чтобы UMP SDK отображал настраиваемое предупреждающее сообщение, обновите свой Info.plist , добавив ключ NSUserTrackingUsageDescription с настраиваемой строкой сообщения, описывающей ваше использование.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

Описание использования появляется как часть диалогового окна ATT при предоставлении формы согласия:

Далее вам нужно будет связать инфраструктуру AppTrackingTransparency :

При тестировании помните, что в соответствии с требованиями Apple диалоговое окно IDFA ATT появится только один раз, поскольку requestTrackingAuthorization: — это одноразовый запрос. Чтобы предупреждение появилось во второй раз, вам необходимо удалить и переустановить приложение на тестовом устройстве.

Использование SDK

SDK предназначен для линейного использования. Шаги по использованию SDK:

  1. Запросите последнюю информацию о согласии.
  2. Проверьте, требуется ли согласие.
  3. Проверьте, доступна ли форма, и если да, загрузите ее.
  4. Предъявите форму.
  5. Предоставьте пользователям возможность изменить свое согласие.

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

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

Загрузите форму, если она доступна.

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

  • У пользователя включено ограничение отслеживания рекламы.
  • Вы отметили пользователя как не достигшего возраста согласия.

Чтобы проверить, доступна ли форма, используйте метод isConsentFormAvailable() экземпляра ConsentInformation . Добавьте метод-оболочку для загрузки формы:

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

Чтобы загрузить форму, вы будете использовать статический метод loadConsentForm() класса ConsentForm . Измените метод loadForm() следующим образом:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

Предоставьте форму, если требуется

Чтобы представить форму согласия, используйте метод show() класса ConsentForm . Вы должны определить, требуется ли пользователю согласие перед отправкой формы. Чтобы проверить, требуется ли согласие, вызовите getConsentStatus() для объекта ConsentInformation , который возвращает перечисление типа ConsentStatus . Существует четыре возможных значения ConsentStatus :

  • unknown : Неизвестный статус согласия.
  • required : согласие пользователя требуется, но еще не получено.
  • notRequired : согласие пользователя не требуется. Например, пользователь не находится в ЕЭЗ или Великобритании.
  • obtained : согласие пользователя получено. Персонализация не определена.

Измените метод loadForm следующим образом:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

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

Тестирование

Принудительно использовать географию

UMP SDK предоставляет возможность протестировать поведение вашего приложения, как если бы устройство находилось в ЕЭЗ, с помощью ConsentDebugSettings.debugGeography .

Чтобы использовать функцию отладки, вам необходимо будет указать хеш-идентификатор вашего тестового устройства в настройках отладки вашего приложения. Если вы вызовете requestConsentInfoUpdate() без установки этого значения, ваше приложение зарегистрирует необходимый хэш идентификатора при запуске.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ['TEST-DEVICE-HASHED-ID']);

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

Чтобы заставить SDK обрабатывать устройство так, как будто оно не находится в ЕЭЗ или Великобритании, используйте DebugGeography.debugGeographyNotEea . Обратите внимание, что настройки отладки работают только на тестовых устройствах. Эмуляторы не нужно добавлять в список идентификаторов устройств, поскольку по умолчанию для них включено тестирование.

При тестировании приложения с помощью UMP SDK вам может оказаться полезным сбросить состояние SDK, чтобы можно было имитировать первый опыт установки пользователя. SDK предоставляет для этого метод reset .

ConsentInformation.instance.reset();

Вам также следует вызвать сброс, если вы решите полностью удалить UMP SDK из своего проекта.

Посредничество

Если вы используете медиацию, вам придется по-разному обрабатывать согласие ваших партнеров по медиации в зависимости от структуры согласия, которую вы решите использовать в своем приложении. Google поддерживает IAB Consent Framework, но также позволяет вам использовать собственное решение для получения согласия. Ниже приведены подробные сведения о том, как проводить посредничество в рамках каждого из этих вариантов.Узнайте больше о нашем решении для получения согласия .

Ни UMP SDK, ни Mobile Ads SDK не пересылают информацию о согласии партнерам по посредничеству. Вместо этого при использовании решения IAB UMP SDK записывает информацию о статусе согласия в локальное хранилище, и SDK каждого партнера по посредничеству несет ответственность за чтение соответствующих ключей. Обязательно обратитесь в каждую стороннюю сеть, чтобы определить, поддерживают ли они решение IAB.

Если вы используете собственное решение для получения согласия, вы обязаны уведомить сторонние SDK о статусе согласия вашего приложения. Каждая сеть медиации имеет собственные API-интерфейсы для обработки согласия, которые документированы для Android и iOS .

См. раздел «Использование сетевых API», чтобы узнать, как вызывать эти API из Dart.

По умолчанию Google Mobile Ads SDK показывает персонализированную рекламу. Если пользователь дал согласие на получение только неперсонализированной рекламы, вы можете настроить объект AdRequest с помощью следующего кода, чтобы указать, что следует запрашивать только неперсонализированную рекламу:

final AdRequest = AdRequest(nonPersonalizedAds: true);
l10n

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