征求欧洲用户同意

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

Чтобы помочь издателям выполнять свои обязанности в соответствии с этой политикой, Google предлагает Consent SDK. Consent SDK - это библиотека с открытым исходным кодом, которая предоставляет служебные функции для сбора согласия от ваших пользователей. Полный исходный код доступен наGitHub .

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

В этом руководстве описывается , как использовать SDK Согласия , чтобы получить согласие от пользователей. Он также описывает , как направить согласие на Google Mobile Ads SDK , как только вы получили согласие.

Предпосылки

CocoaPods (предпочтительно)

Самый простой способ , чтобы импортировать SDK в проект Иос с CocoaPods . Откройте Podfile вашего проекта и добавьте эту строку в цель вашего приложения:

pod 'PersonalizedAdConsent'

Затем из командной строки запустите:

pod install --repo-update

Если вы новичок в CocoaPods, увидеть их официальную документацию , содержащую информацию о том , как создавать и использовать Podfiles.

Ручная загрузка

Вы также можете загрузить или клонировать источник SDK напрямую, и следовать этим инструкциям , чтобы включить его в проект:

  1. С искателем, перетащите PersonalizedAdConsent.xcodeproj файл в проект.

  2. Перейдите на вкладку Построить фазы. В соответствии с целевыми зависимостями, нажмите кнопку + и добавить цель PersonalizedAdConsent.

  3. Щелкните правой кнопкой мыши проект и выберите Добавить файлы в «MyProject». Перейдите к PersonalizedAdConsent.bundle . Убедитесь в том , чтобы проверить Создать папку ссылки.

    Как только это будет завершена, вы должны увидеть PersonalizedAdConsent.bundle в списке на вкладке Построить Фазы в разделе Копирование Bundle ресурсов.

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

Если вы не используете посредничество

Если вы не используете посредничество, у вас есть два варианта реализации Consent SDK для сбора согласия.

Одним из вариантов является использование Согласия SDK представить Google рендерящийся форму информированного согласия для пользователей. Формы согласия отображает список поставщиков рекламных технологий , которые вы выбрали в AdMobUI. В Consent SDK хранится ответ о согласии пользователя.

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

После того , как пользователь сделал выбор согласия, вы можете попросить согласия SDK для хранения выбора согласия пользователя , как описан в Запоминании издателя удался согласие .

После сбора согласия, если пользователь дал согласие на получение только неперсонализированные объявлений, вам необходимо направить согласие на Google Mobile Ads SDK .

Если вы используете AdMob посредничество

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

Как разработчику приложения вам необходимо получить согласие пользователей как от поставщиков рекламных технологий, возвращаемых Consent SDK, так и от поставщиков из других рекламных сетей. Вам также необходимо вручную ответы согласия магазина пользователя и вперед согласие на Google Mobile Ads SDK , если пользователь согласился получить только неперсонализированные объявления.

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

Обновить статус согласия

При использовании Согласия SDK, рекомендуется , чтобы определить , статус согласия пользователя при каждом запуске приложения. Чтобы сделать это, вызовите requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: на примере PACConsentInformation .

Быстрый

import PersonalizedAdConsent
...
class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    PACConsentInformation.sharedInstance.
    requestConsentInfoUpdate(
    forPublisherIdentifiers: ["pub-0123456789012345"])
    {(_ error: Error?) -> Void in
      if let error = error {
        // Consent info update failed.
      } else {
        // Consent info update succeeded. The shared PACConsentInformation
        // instance has been updated.
      }
    }
  }

Цель-C

#import <PersonalizedAdConsent/PersonalizedAdConsent.h>
...
@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [PACConsentInformation.sharedInstance
      requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-0123456789012345" ]
          completionHandler:^(NSError *_Nullable error) {
            if (error) {
              // Consent info update failed.
            } else {
              // Consent info update succeeded. The shared PACConsentInformation
              // instance has been updated.
            }
          }];
}

Вызов requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: требует два аргумента:

  • Массив действительных, полностью активированные идентификаторы издателя , что ваше приложение запрашивает объявления.Найдите свой идентификатор издателя .

  • Блок , который принимает NSError в качестве входного параметра, который предоставляет информацию по запросу неудавшегося обновления согласия.

Если информация согласия успешно обновлена, PACConsentInformation.sharedInstance.consentStatus предоставляет статус обновленного согласия. Он может иметь следующие значения:

Состояние согласия Определение
PACConsentStatusPersonalized Пользователь дал согласие на персонализированную рекламу.
PACConsentStatusNonPersonalized Пользователь дал согласие на показ неперсонализированной рекламы.
PACConsentStatusUnknown Пользователь не давал и не отказывался от согласия на персонализированную или неперсонализированную рекламу.

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

Если requestLocationInEEAOrUnknown свойство NO , пользователь не находится в Европейской экономической зоне и согласие не требуется в соответствии с пользователем ЕС согласия политики . Вы можете отправлять запросы объявлений в Google Mobile Ads SDK.

Если requestLocationInEEAOrUnknown свойство YES :

  • Если PACConsentStatus является PACConsentStatusPersonalized или PACConsentStatusNonPersonalized , пользователь уже предоставил согласие. Теперь вы можете вперед согласие на Google Mobile Ads SDK .

  • Если пользователь имеет PACConsentStatusUnknown согласия см раздел Collect согласия ниже, в котором описывается использование вспомогательных методов для сбора согласия.

Google,Согласие SDK .предусматривает два способа для сбора согласия от пользователя:

Помните , чтобы предоставить пользователям возможность изменения или отзывать согласие .

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

  • Согласие на просмотр персонализированной рекламы
  • Согласие на просмотр неперсонализированной рекламы
  • Используйте платную версию приложения вместо просмотра рекламы

Вам следует внимательно изучить текст согласия: то , что по умолчанию появляется сообщение , которое может быть уместным , если вы используете Google для монетизации приложений; но мы не можем предоставить юридические консультации по тексту согласия, который вам подходит. Для текста согласия обновления от Google-оказанной формы с согласием, изменить consentform.html файл , включенный в SDK согласия по мере необходимости.

Google рендеренной форма согласия конфигурируется и отображается с помощью PACConsentForm класса. Следующий код демонстрирует , как построить PACConsentForm со всеми тремя вариантами формы:

Быстрый

// TODO: Replace with your app's privacy policy url.
guard let privacyUrl = URL(string: "https://www.your.com/privacyurl"),
  let form = PACConsentForm(applicationPrivacyPolicyURL: privacyUrl) else {
    print("incorrect privacy URL.")
    return
}
form.shouldOfferPersonalizedAds = true
form.shouldOfferNonPersonalizedAds = true
form.shouldOfferAdFree = true

Цель-C

// TODO: Replace with your app's privacy policy url.
NSURL *privacyURL = [NSURL URLWithString:@"https://www.your.com/privacyurl"];
PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURL:privacyURL];
form.shouldOfferPersonalizedAds = YES;
form.shouldOfferNonPersonalizedAds = YES;
form.shouldOfferAdFree = YES;

Свойства PACConsentForm описаны более подробно ниже:

shouldOfferPersonalizedAds
Указывает, должен ли в форме согласия отображаться вариант персонализированной рекламы. По умолчанию YES .
shouldOfferNonPersonalizedAds
Указывает, должен ли в форме согласия отображаться вариант неперсонализированной рекламы. По умолчанию YES .
shouldOfferAdFree
Указывает, должен ли в форме согласия отображаться вариант приложения без рекламы. Значение по умолчанию NO .

После того как вы создали и настроили PACConsentForm объект, загрузите форму согласия, вызывая loadWithCompletionHandler: метод PACConsentForm , как показано ниже:

Быстрый

form.load {(_ error: Error?) -> Void in
  print("Load complete.")
  if let error = error {
    // Handle error.
    print("Error loading form: \(error.localizedDescription)")
  } else {
    // Load successful.
  }
}

Цель-C

[form loadWithCompletionHandler:^(NSError *_Nullable error) {
  NSLog(@"Load complete. Error: %@", error);
  if (error) {
    // Handle error.
  } else {
    // Load successful.
  }
}];

Для того, чтобы представить пользователю Google , оказанной форме с согласия, вызовите presentFromViewController:dismissCompletion: на загруженном PACConsentForm , как показано ниже:

Быстрый

form.present(from: self) { (error, userPrefersAdFree) in
      if let error = error {
        // Handle error.
      } else if userPrefersAdFree {
        // User prefers to use a paid version of the app.
      } else {
        // Check the user's consent choice.
        let status =
             PACConsentInformation.sharedInstance.consentStatus
      }
    }

Цель-C

 [form presentFromViewController:self
     dismissCompletion:^(NSError *_Nullable error, BOOL userPrefersAdFree) {
       if (error) {
         // Handle error.
       } else if (userPrefersAdFree) {
         // The user prefers to use a paid version of the app.
       } else {
         // Check the user's consent choice.
         PACConsentStatus status =
             PACConsentInformation.sharedInstance.consentStatus;
       }
     }];

Вызов presentFromViewController:dismissCompletion: требует два аргумента:

  • UIViewController , чтобы подарок от.

  • Блок , который принимает NSError и BOOL в качестве входных параметров. NSError предоставляет информацию , если произошла ошибка , показывающая форму согласия. userPrefersAdFree BOOL имеет значение YES , когда пользователь выбрал использовать платную версию приложения вместо просмотра объявлений.

После того как пользователь выбирает опцию и закрывает форму, Согласие SDK сохраняет выбор пользователя и вызывает dismissCompletion: блок. Вы можете прочитать выбор и пользователя вперед согласие на Google Mobile Ads SDK .

Сбор согласия, управляемый издателем

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

Перед тем, как получить доступ к adProviders свойства PACConsentInformation , вы должны ждать успешного обновления статуса согласия пользователя , как описаны в состоянии обновления согласия раздела.

Быстрый

let adProviders = PACConsentInformation.sharedInstance.adProviders

Цель-C

NSArray *adProviders = PACConsentInformation.sharedInstance.adProviders;

Затем вы можете использовать список поставщиков рекламы, чтобы получить согласие самостоятельно.

После получения согласия, запись PACConsentStatus соответствующие реакции пользователя , используя status свойство PACConsentInformation класса.

Быстрый

PACConsentInformation.sharedInstance.consentStatus = .personalized

Цель-C

PACConsentInformation.sharedInstance.consentStatus = PACConsentStatusPersonalized;

Сообщив согласие Согласия SDK, вы можете направить согласие на Google Mobile Ads SDK .

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

Если издателю известно, что пользователь не достиг возраста согласия, во всех запросах рекламы должен быть установлен параметр TFUA (Тег для пользователей, не достигших возраста согласия в Европе). Чтобы включить этот тег на все запросы , сделанные из вашего приложения,установить tagForUnderAgeOfConsent свойство YES . Этот параметр вступает в силу для всех будущих запросов объявлений.

Быстрый

PACConsentInformation.sharedInstance.isTaggedForUnderAgeOfConsent = true

Цель-C

PACConsentInformation.sharedInstance.tagForUnderAgeOfConsent = YES;

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

Чтобы удалить TFUA из запросов объявленийустановить tagForUnderAgeOfConsent свойство NO .

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

Согласие SDK имеет различное поведение в зависимости от значенияPACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown .Например, форма согласия не загружается , если пользователь не находится в ЕЭП.

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

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

    #import <AdSupport/AdSupport.h>
    // ...
    
    NSLog(@"Advertising ID: %@",
          ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString);

    А затем проверьте консоль, чтобы получить его:

    Advertising ID: 41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339
  2. Укажите свое устройство как тестовое, используя рекламный идентификатор в консоли:

    PACConsentInformation.sharedInstance.debugIdentifiers =
        @[ @"41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339" ];
  3. Наконец, установите debugGeography в предпочитаемую географию для целей тестирования.

    // Geography appears as in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyEEA;
    // Geography appears as not in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyNotEEA;

После выполнения этих шагов, звонки на статус согласия обновление будет принимать во внимание ваши отладки географии.

此部分中的代码可用于任何版本的 Google 移动广告 SDK。无论您是否使用 Consent SDK 征求用户意见,均可使用这些代码。

默认的 Google 移动广告 SDK 行为是投放个性化广告。如果用户仅同意接收非个性化广告,您可以配置 GADRequest 对象,以指定只应请求非个性化广告。无论用户是否在欧洲经济区 (EEA) 内,以下代码都会导致请求非个性化广告:

Swift

let request = GADRequest()
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)

Objective-C

GADRequest *request = [GADRequest request];
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];

如果请求的是非个性化广告,则广告请求网址目前会包含 &npa=1。但请注意,这是 Google 移动广告 SDK 的内部实现细节,随时可能会出现更改。

Измерение задержки приложения (необязательно)

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

Однако, если ваше приложение требует согласия пользователя , прежде чем эти события могут быть отправлены, вы можете отложить измерение приложения , пока вы явно не инициализировать Mobile Ads SDK или загрузить объявление.

Для измерения приложения задержки, добавьте GADDelayAppMeasurementInit ключ с логическим значением YES для вашего приложения Info.plist . Вы можете внести это изменение программно:

<key>GADDelayAppMeasurementInit</key>
<true/>

Или отредактируйте его в редакторе списка свойств:

Вопросы-Ответы

Сколько поставщиков рекламных технологий поддерживает Consent SDK?
Consent SDK не накладывает ограничений на количество поставщиков рекламных технологий, которых издатель выбирает для включения.
Имеет ли автоматически обновлять список поставщиков рекламных технологий , возвращенных SDK , если я изменить свой выбор в AdMob UI?
Да, если вы вносите изменения в список поставщиков рекламных технологий вAdMob UI, изменения будут распространяться на серверы объявлений Google, примерно один час.