Начать

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
-placeholder

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

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

Предпосылки

Типы пользовательских сообщений

Полный список поддерживаемых сообщений см. в разделеТипы пользовательских сообщений. Конкретные инструкции по реализации каждого типа сообщений см. на левой панели навигации.

Импорт SDK

CocoaPods (желательно)

UMP SDK входит в состав модуля Google Mobile Ads SDK, начиная с версии Google Mobile Ads SDK 7.64.0.

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

pod 'Google-Mobile-Ads-SDK'

Затем выполните следующую команду:

pod install --repo-update

Если вы новичок в CocoaPods, см. Использование CocoaPods для получения подробной информации о том, как создавать и использовать Podfiles.

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

Другой способ импорта SDK — сделать это вручную.

Скачать SDK

Затем перетащите фреймворк в свой проект Xcode, убедившись, что вы выбрали « Копировать элементы», если это необходимо .

Затем вы можете включить фреймворк в любой файл, который вам нужен, используя:

Быстрый

import UserMessagingPlatform

Цель-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Обновите свой Info.plist

Получите идентификатор своего приложения в разделе «Мобильные приложения» Менеджера рекламы:

и добавьте его в свой Info.plist :

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

Определите, нужно ли отображать сообщение

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

При необходимости вы можете представить форму позже.

Вот пример того, как проверить статус при запуске приложения:

Быстрый

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   // Create a UMPRequestParameters object.
   let parameters = UMPRequestParameters()
   // Set tag for under age of consent. Here false means users are not under age.
   parameters.tagForUnderAgeOfConsent = false

   // Request an update to the consent information.
   UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
      with: parameters,
      completionHandler: { error in
        if error != nil {
           // Handle the error.
        } else {
           // The consent information state was updated.
           // You are now ready to check if a form is
           // available.
        }
       })
}

Цель-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];
}

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

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

Чтобы проверить доступность формы, используйте созданный ранееthe formStatus property on the UMPConsentInformation instance .

Затем добавьте метод-оболочку для загрузки формы:

Быстрый

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

Цель-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

Чтобы загрузить форму, используйте the static loadWithCompletionHandler: method on the UMPConsentForm class.

Быстрый

func loadForm() {
  // Loads a consent form. Must be called on the main thread.
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Цель-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

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

После того как вы определили доступность формы и загрузили ее, используйте методpresentFromViewController:completionHandler: UMPConsentForm для экземпляра l10n-placeholder95, чтобы представить форму.

Используйте ранее созданный объектUMPConsentInformation , чтобы проверитьconsent status и обновить методloadForm :

Быстрый

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }
                // Handle dismissal by reloading form.
                loadForm();
            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Цель-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }
                        // Handle dismissal by reloading form.
                        [self loadForm];
                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

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

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

Заставить географию

UMP SDK позволяет протестировать поведение вашего приложения, как если бы устройство находилось в ЕЭЗ или Великобритании, с помощью the debugGeography property of type UMPDebugGeography on UMPDebugSettings.

Вы должны указать хэш-идентификатор вашего тестового устройства в настройках отладки вашего приложения, чтобы использовать функции отладки. Если вы вызываетеrequestConsentInfoUpdateWithParameters:completionHandler: без установки этого значения, ваше приложение регистрирует требуемый хэш идентификатора при запуске.

Быстрый

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      ...
    })

Цель-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

С помощью UMPDebugGeographyу вас есть возможность принудительно указать географию в одном из следующих вариантов:

DebugGeography Описание
UMPDebugGeographyDisabled География отладки отключена.
UMPDebugGeographyEEA География отображается как в ЕЭЗ для отладочных устройств.
UMPDebugGeographyNotEEA Географическое положение отображается как не входящее в ЕЭЗ для устройств отладки.

Обратите внимание, что настройки отладки работают только на тестовых устройствах. Эмуляторы не нужно добавлять в список идентификаторов устройств, так как для них уже включено тестирование по умолчанию.

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

Быстрый

UMPConsentInformation.sharedInstance.reset()

Цель-C

[UMPConsentInformation.sharedInstance reset];

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