Начать

Выберите платформу: Android iOS

Google User Messaging Platform (UMP) SDK – это инструмент для управления настройками конфиденциальности и сообщениями. Подробнее о разделе "Конфиденциальность и сообщения"… Примеры реализации IMA с UMP SDK можно посмотреть в примерах приложений UMP на Objective-C или Swift.

Как создать тип сообщения

Создайте сообщение для пользователей, выбрав один из доступных типов на вкладке Конфиденциальность и сообщения в аккаунте Менеджера рекламы. UMP SDK пытается показать сообщение о конфиденциальности, созданное на основе идентификатора приложения для медиарекламы, заданного в вашем проекте.

Подробнее о конфиденциальности и сообщениях…

Импортируйте SDK

UMP SDK не входит в IMA SDK, поэтому его нужно добавить отдельно.

CocoaPods (рекомендуется)

Проще всего импортировать SDK в проект iOS с помощью CocoaPods. Откройте файл Podfile проекта и добавьте в целевой объект приложения следующую строку:

pod 'GoogleUserMessagingPlatform'

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

pod install --repo-update

Если вы ещё не работали с CocoaPods, ознакомьтесь с инструкциями по созданию и использованию файлов Podfile.

Swift Package Manager

UMP SDK также поддерживает Swift Package Manager. Чтобы импортировать пакет Swift, выполните следующие действия:

  1. В Xcode установите пакет UMP SDK Swift, выбрав File (Файл) > Add Packages (Добавить пакеты).

  2. В появившемся окне найдите хранилище UMP SDK Swift Package на GitHub:

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. Выберите версию пакета Swift UMP SDK, которую вы хотите использовать. Для новых проектов рекомендуется использовать До следующей основной версии.

После этого Xcode начнет распознавать зависимости пакета и скачивать их в фоновом режиме. Подробнее о том, как добавить зависимости пакетов, можно узнать из статьи Apple.

Как добавить идентификатор приложения

Идентификатор приложения можно найти в интерфейсе Менеджера рекламы. Добавьте идентификатор в Info.plist с помощью следующего фрагмента кода:

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

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

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

Swift


// Requesting an update to consent information should be called on every app launch.
ConsentInformation.shared.requestConsentInfoUpdate(with: parameters) {
  requestConsentError in
  // ...
}

Objective-C


// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable requestConsentError) {
                           // ...
                         }];

Загрузка и показ формы сообщения о конфиденциальности

После того как вы получите актуальный статус согласия, вызовите функцию loadAndPresentIfRequiredFromViewController:completionHandler:, чтобы загрузить формы, необходимые для сбора согласия пользователей. После загрузки формы сразу показываются.

Swift


try await ConsentForm.loadAndPresentIfRequired(from: viewController)

Objective-C


[UMPConsentForm
    loadAndPresentIfRequiredFromViewController:viewController
                             completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                 // Consent gathering process is complete.
                                }];

Настройки конфиденциальности

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

Как узнать, нужна ли точка входа для параметров конфиденциальности

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

Swift


var isPrivacyOptionsRequired: Bool {
  return ConsentInformation.shared.privacyOptionsRequirementStatus == .required
}

Objective-C


- (BOOL)isPrivacyOptionsRequired {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
         UMPPrivacyOptionsRequirementStatusRequired;
}

- (void)gatherConsentFromConsentPresentationViewController:(UIViewController *)viewController
                                  consentGatheringComplete:
                                      (void (^)(NSError *_Nullable))consentGatheringComplete {
  UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
  // Set tag for under age of consent. Use NO constant to indicate that the user is not under age.
  parameters.tagForUnderAgeOfConsent = NO;

  UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
  // Uncomment the following line to simulate a consent request from users in the
  // European Economic Area (EEA) for testing purposes.
  // debugSettings.geography = UMPDebugGeographyEEA;
  parameters.debugSettings = debugSettings;

  // Requesting an update to consent information should be called on every app launch.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:parameters
                           completionHandler:^(NSError *_Nullable requestConsentError) {
                             // ...
                           }];
}

- (void)loadAndPresentIfRequiredFromViewController:(UIViewController *)viewController
                           completionHandler:(void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm
      loadAndPresentIfRequiredFromViewController:viewController
                               completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                   // Consent gathering process is complete.
                                  }];
}

- (void)presentPrivacyOptionsFormFromViewController:(UIViewController *)viewController
                                  completionHandler:
                                      (void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                            completionHandler:completionHandler];
}

@end

Полный список статусов требований к параметрам конфиденциальности приведен в разделе UMPPrivacyOptionsRequirementStatus.

Покажите форму с настройками конфиденциальности

Когда пользователь взаимодействует с вашим элементом, покажите форму с настройками конфиденциальности:

Swift


ConsentForm.presentPrivacyOptionsForm(
  from: viewController, completionHandler: completionHandler)

Objective-C


[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                          completionHandler:completionHandler];

Как запрашивать объявления с согласия пользователя

Перед тем как запрашивать объявления, используйте UMPConsentInformation.sharedInstance.canRequestAds, чтобы проверить, получено ли согласие пользователя:

Swift

ConsentInformation.shared.canRequestAds

Objective-C

UMPConsentInformation.sharedInstance.canRequestAds;

Ниже перечислены места, где можно проверить, можно ли запрашивать объявления при сборе согласия:

  • После того как UMP SDK получит согласие в текущем сеансе.
  • Сразу после вызова requestConsentInfoUpdateWithParameters:completionHandler:. UMP SDK мог получить согласие в предыдущем сеансе приложения.

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

Предотвращение избыточной работы по запросу объявлений

При проверке UMPConsentInformation.sharedInstance.canRequestAds после получения согласия и вызова requestConsentInfoUpdateWithParameters:completionHandler: убедитесь, что ваша логика предотвращает избыточные запросы объявлений, которые могут привести к тому, что обе проверки вернут true. Например, с помощью логической переменной.

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

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

  1. Позвоните в компанию " requestConsentInfoUpdateWithParameters:completionHandler:".
  2. В выходных данных журнала найдите сообщение, похожее на приведенное ниже. В нем указан идентификатор устройства и инструкции по добавлению его в качестве тестового устройства:

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. Скопируйте идентификатор тестового устройства в буфер обмена.

  4. Измените код, чтобы вызвать функцию UMPDebugSettings().testDeviceIdentifiers и передать список идентификаторов тестовых устройств.

    Swift

    let parameters = RequestParameters()
    let debugSettings = DebugSettings()
    
    debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
    parameters.debugSettings = debugSettings
    
    // Include the UMPRequestParameters in your consent request.
    ConsentInformation.shared.requestConsentInfoUpdate(
        with: parameters,
        completionHandler: { error in
          // ...
        })
    

    Objective-C

    UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
    UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
    
    debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
    parameters.debugSettings = debugSettings;
    
    // Include the UMPRequestParameters in your consent request.
    [UMPConsentInformation.sharedInstance
        requestConsentInfoUpdateWithParameters:parameters
                            completionHandler:^(NSError *_Nullable error){
                              // ...
    }];
    

Как принудительно задать местоположение

UMP SDK позволяет тестировать поведение приложения так, как если бы устройство находилось в разных регионах, например в Европейской экономической зоне (ЕЭЗ), Великобритании и Швейцарии, с помощью UMPDebugGeography. Обратите внимание, что настройки отладки работают только на тестовых устройствах.

Swift

let parameters = RequestParameters()
let debugSettings = DebugSettings()

debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings

// Include the UMPRequestParameters in your consent request.
ConsentInformation.shared.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      // ...
    })

Objective-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];

debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;

// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           // ...
}];

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

Swift

ConsentInformation.shared.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

Примеры на GitHub

Полный пример интеграции UMP SDK, описанной на этой странице, можно найти в Swift UmpExample и Objective-C UmpExample.