SDK Google User Messaging Platform (UMP) – это инструмент конфиденциальности и обмена сообщениями, который поможет вам управлять настройками конфиденциальности. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» . Рабочую реализацию IMA с UMP SDK можно увидеть в примерах приложений Objective-C или Swift UMP.
Создайте тип сообщения
Создавайте пользовательские сообщения, используя один из доступных типов пользовательских сообщений на вкладке «Конфиденциальность и сообщения» вашего аккаунта Менеджера рекламы. UMP SDK пытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения интерактивной медиарекламы, установленного в вашем проекте.
Дополнительные сведения см. в разделе О конфиденциальности и обмене сообщениями .
Импортируйте SDK
UMP SDK не входит в состав IMA SDK как зависимость, поэтому его необходимо явно добавить самостоятельно.
CocoaPods (предпочтительно)
Самый простой способ импортировать SDK в проект iOS — использовать CocoaPods . Откройте подфайл вашего проекта и добавьте эту строку в цель вашего приложения:
pod 'GoogleUserMessagingPlatform'
Затем выполните следующую команду:
pod install --repo-update
Если вы новичок в CocoaPods, см. раздел Использование CocoaPods для получения подробной информации о том, как создавать и использовать Podfiles.
Менеджер пакетов Swift
UMP SDK также поддерживает диспетчер пакетов Swift. Выполните следующие действия, чтобы импортировать пакет Swift.
В Xcode установите пакет UMP SDK Swift, выбрав «Файл» > «Добавить пакеты...» .
В появившемся окне найдите репозиторий UMP SDK Swift Package на GitHub:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
Выберите версию пакета UMP SDK Swift, которую вы хотите использовать. Для новых проектов мы рекомендуем использовать Up to Next Major Version .
Затем Xcode разрешает зависимости вашего пакета и загружает их в фоновом режиме. Более подробную информацию о том, как добавить зависимости пакета, можно найти в статье Apple .
Добавьте идентификатор приложения
Идентификатор вашего приложения можно найти в пользовательском интерфейсе Менеджера рекламы . Добавьте идентификатор в свой Info.plist
с помощью следующего фрагмента кода:
<key>UMPApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
Получить информацию о согласии пользователя
Вам следует запрашивать обновление информации о согласии пользователя при каждом запуске приложения, используя requestConsentInfoUpdateWithParameters:completionHandler:
. Этот запрос проверяет следующее:
- Требуется ли согласие . Например, согласие требуется в первый раз или срок действия предыдущего решения о согласии истек.
- Требуется ли точка входа для параметров конфиденциальности . Некоторые сообщения о конфиденциальности требуют, чтобы приложения позволяли пользователям изменять параметры конфиденциальности в любое время.
Быстрый
// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
requestConsentError in
// ...
}
Цель-C
// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
// ...
}];
Загрузите и отправьте форму сообщения о конфиденциальности
После того как вы получили самую последнюю информацию о состоянии согласия, вызовите loadAndPresentIfRequiredFromViewController:completionHandler:
чтобы загрузить любые формы, необходимые для получения согласия пользователя. После загрузки формы отображаются сразу.
Быстрый
try await UMPConsentForm.loadAndPresentIfRequired(from: viewController)
Цель-C
[UMPConsentForm
loadAndPresentIfRequiredFromViewController:viewController
completionHandler:^(NSError *_Nullable loadAndPresentError) {
// Consent gathering process is complete.
}];
Параметры конфиденциальности
Некоторые формы сообщений о конфиденциальности представляются из точки входа параметров конфиденциальности, созданной издателем, что позволяет пользователям управлять своими параметрами конфиденциальности в любое время. Дополнительные сведения о том, какое сообщение видят ваши пользователи в точке входа в параметры конфиденциальности, см. в разделе Доступные типы сообщений пользователей .
Проверьте, требуется ли точка входа для параметров конфиденциальности
После вызова requestConsentInfoUpdateWithParameters:completionHandler:
проверьте UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus
, чтобы определить, требуется ли для вашего приложения точка входа параметров конфиденциальности. Если требуется точка входа, добавьте в свое приложение видимый и интерактивный элемент пользовательского интерфейса, который представляет форму параметров конфиденциальности. Если точка входа в конфиденциальность не требуется, настройте элемент пользовательского интерфейса так, чтобы он был невидимым и недоступным для взаимодействия.
Быстрый
var isPrivacyOptionsRequired: Bool {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}
Цель-C
- (BOOL)areGDPRConsentMessagesRequired {
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
.
Предоставить форму параметров конфиденциальности
Когда пользователь взаимодействует с вашим элементом, отобразите форму параметров конфиденциальности:
Быстрый
UMPConsentForm.presentPrivacyOptionsForm(
from: viewController, completionHandler: completionHandler)
Цель-C
[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
completionHandler:completionHandler];
Запросить рекламу с согласия пользователя
Прежде чем запрашивать рекламу, используйте UMPConsentInformation.sharedInstance.canRequestAds
чтобы проверить, получили ли вы согласие от пользователя:
Быстрый
UMPConsentInformation.sharedInstance.canRequestAds
Цель-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
и передал список идентификаторов тестовых устройств.Быстрый
let parameters = UMPRequestParameters() let debugSettings = UMPDebugSettings() debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"] parameters.debugSettings = debugSettings // Include the UMPRequestParameters in your consent request. 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" ]; parameters.debugSettings = debugSettings; // Include the UMPRequestParameters in your consent request. [UMPConsentInformation.sharedInstance requestConsentInfoUpdateWithParameters:parameters completionHandler:^(NSError *_Nullable error){ // ... }];
Принудительно использовать географию
UMP SDK предоставляет возможность протестировать поведение вашего приложения, как если бы устройство находилось в различных регионах, например в ЕЭЗ или Великобритании, с помощью UMPDebugGeography . Обратите внимание, что настройки отладки работают только на тестовых устройствах.
Быстрый
let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
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;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
// ...
}];
Сбросить статус согласия
При тестировании приложения с помощью UMP SDK вам может оказаться полезным сбросить состояние SDK, чтобы можно было имитировать первый опыт установки пользователя. SDK предоставляет для этого метод reset
.
Быстрый
UMPConsentInformation.sharedInstance.reset()
Цель-C
[UMPConsentInformation.sharedInstance reset];
Примеры на GitHub
Полный пример интеграции UMP SDK, представленный на этой странице, см. в Swift UmpExample и Objective-C UmpExample .