Google User Messaging Platform (UMP) SDK – это инструмент для управления настройками конфиденциальности и сообщениями. Подробнее о странице "Конфиденциальность и сообщения"… Примеры реализации IMA с UMP SDK можно найти в примерах приложений UMP на Objective-C и Swift.
Как создать тип сообщения
Создайте сообщение для пользователей, выбрав один из доступных типов на вкладке Конфиденциальность и сообщения в аккаунте Менеджера рекламы. UMP SDK пытается показать сообщение о конфиденциальности, созданное на основе идентификатора приложения Interactive Media Ads, заданного в вашем проекте.
Подробнее о странице "Конфиденциальность и сообщения"…Импортируйте SDK
UMP SDK не входит в IMA SDK, поэтому его нужно добавить самостоятельно.
Рекомендуется использовать Swift Package Manager
Чтобы импортировать пакет Swift UMP SDK, выполните следующие действия:
В Xcode установите пакет UMP SDK Swift, выбрав File (Файл) > Add Packages (Добавить пакеты).
В появившемся окне найдите хранилище пакета Swift для UMP SDK на GitHub:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.gitВыберите версию пакета Swift для UMP SDK, которую вы хотите использовать. Для новых проектов рекомендуется использовать Up to Next Major Version.
После этого Xcode распознает зависимости пакета и скачает их в фоновом режиме. Подробнее о том, как добавлять зависимости пакетов…
CocoaPods
Чтобы использовать CocoaPods, откройте файл Podfile проекта и добавьте в цель приложения следующую строку:
pod 'GoogleUserMessagingPlatform'
Затем выполните следующую команду:
pod install --repo-updateЕсли вы не знакомы с CocoaPods, прочитайте руководство по использованию CocoaPods, чтобы узнать, как создавать и использовать файлы Podfile.
Добавьте идентификатор приложения
Идентификатор приложения можно найти в интерфейсе Менеджера рекламы.
Добавьте идентификатор в
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. Например, с помощью логической переменной.
Тестирование
Если вы хотите протестировать интеграцию в приложении во время разработки, выполните следующие действия, чтобы программно зарегистрировать тестовое устройство. Не забудьте удалить код, задающий идентификаторы тестовых устройств, перед публикацией приложения.
- Позвоните в компанию "
requestConsentInfoUpdateWithParameters:completionHandler:". Найдите в журнале сообщение, похожее на приведенное ниже. В нем указан идентификатор устройства и объясняется, как добавить его в качестве тестового.
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]Скопируйте идентификатор тестового устройства в буфер обмена.
Измените код, чтобы вызвать
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.