SDK платформы обмена сообщениями Google (UMP) — это инструмент для управления конфиденциальностью и настройками обмена сообщениями. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» . Вы можете увидеть работающую реализацию IMA с использованием SDK UMP в примерах приложений UMP на Objective-C или Swift .
Создайте тип сообщения
Создавайте сообщения для пользователей, используя один из доступных типов сообщений на вкладке «Конфиденциальность и сообщения» в вашем аккаунте Ad Manager. UMP SDK попытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения интерактивной медиа-рекламы, заданного в вашем проекте.
Более подробную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Импортируйте SDK
UMP SDK не входит в состав зависимостей IMA SDK, поэтому его необходимо добавить самостоятельно.
CocoaPods (предпочтительно)
Самый простой способ импортировать SDK в iOS-проект — использовать CocoaPods . Откройте Podfile вашего проекта и добавьте следующую строку в целевой объект вашего приложения:
pod 'GoogleUserMessagingPlatform'
Затем выполните следующую команду:
pod install --repo-updateЕсли вы новичок в CocoaPods, ознакомьтесь с разделом «Использование CocoaPods» для получения подробной информации о создании и использовании Podfiles.
Swift Package Manager
UMP SDK также поддерживает Swift Package Manager. Выполните следующие шаги для импорта пакета Swift.
В Xcode установите пакет UMP SDK Swift, перейдя в меню Файл > Добавить пакеты... .
В появившемся окне найдите репозиторий GitHub с пакетом UMP SDK Swift:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.gitВыберите версию пакета UMP SDK Swift, которую вы хотите использовать. Для новых проектов мы рекомендуем использовать версию «Up to Next Major Version» .
Затем Xcode разрешает зависимости ваших пакетов и загружает их в фоновом режиме. Более подробную информацию о том, как добавить зависимости пакетов, см. в статье Apple .
Добавьте идентификатор приложения.
Идентификатор вашего приложения можно найти в пользовательском интерфейсе Ad Manager . Добавьте идентификатор в файл 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.
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: для загрузки всех форм, необходимых для сбора согласия пользователя. После загрузки формы отобразятся немедленно.
Быстрый
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 , чтобы определить, требуется ли точка входа для параметров конфиденциальности в вашем приложении. Если точка входа требуется, добавьте в приложение видимый и интерактивный элемент пользовательского интерфейса, отображающий форму параметров конфиденциальности. Если точка входа для параметров конфиденциальности не требуется, настройте элемент пользовательского интерфейса так, чтобы он был невидимым и интерактивным.
Быстрый
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 .
Предъявите форму выбора параметров конфиденциальности
Когда пользователь взаимодействует с вашим элементом, отобразите форму с параметрами конфиденциальности:
Быстрый
ConsentForm.presentPrivacyOptionsForm(
from: viewController, completionHandler: completionHandler)
Objective-C
[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
completionHandler:completionHandler];
Запрос рекламы с согласия пользователя.
Перед запросом показа рекламы используйте UMPConsentInformation.sharedInstance.canRequestAds , чтобы проверить, получили ли вы согласие пользователя:
Быстрый
ConsentInformation.shared.canRequestAds
Objective-C
UMPConsentInformation.sharedInstance.canRequestAds;
Ниже перечислены места, где можно проверить, можно ли запрашивать рекламу, одновременно получая согласие на ее показ:
- После того, как UMP SDK получит согласие в текущей сессии.
- Сразу после вызова
requestConsentInfoUpdateWithParameters:completionHandler:, SDK UMP мог получить согласие в предыдущей сессии приложения.
Если в процессе сбора согласия возникает ошибка, проверьте, можете ли вы запрашивать рекламу. 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 = 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 . Обратите внимание, что параметры отладки работают только на тестовых устройствах.
Быстрый
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 для выполнения этой операции.
Быстрый
ConsentInformation.shared.reset()
Objective-C
[UMPConsentInformation.sharedInstance reset];
Примеры на GitHub
Полный пример интеграции UMP SDK, описанный на этой странице, можно найти в примерах Swift UmpExample и Objective-C UmpExample .