SDK платформы обмена сообщениями Google (UMP) — это инструмент для управления настройками конфиденциальности и обмена сообщениями. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Создайте тип сообщения
Создавайте сообщения для пользователей, используя один из доступных типов сообщений на вкладке «Конфиденциальность и сообщения» в вашем аккаунте AdMob. SDK UMP попытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения AdMob, заданного в вашем проекте.
Более подробную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Получите информацию о согласии пользователя.
При каждом запуске приложения следует запрашивать обновление информации о согласии пользователя, используя requestConsentInfoUpdate() . Этот запрос проверяет следующее:
- Требуется ли согласие ? Например, требуется ли согласие впервые, или истек срок действия предыдущего решения о согласии.
- Необходимо ли указывать точку входа в настройки конфиденциальности ? Некоторые сообщения о конфиденциальности требуют от приложений предоставления пользователям возможности изменять свои настройки конфиденциальности в любое время.
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update to consent information on every app launch.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
// Called when consent information is successfully updated.
},
(FormError error) {
// Called when there's an error updating consent information.
},
);
}
Загрузите и отобразите форму сообщения о конфиденциальности.
После получения самой актуальной информации о согласии пользователя вызовите функцию loadAndShowConsentFormIfRequired() чтобы загрузить все необходимые формы для сбора согласия пользователя. После загрузки формы отобразятся немедленно.
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update to consent information on every app launch.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
});
},
(FormError error) {
// Handle the error.
},
);
}
Параметры конфиденциальности
Некоторые формы для отправки сообщений о конфиденциальности отображаются через точку входа параметров конфиденциальности, предоставляемую издателем, что позволяет пользователям управлять своими настройками конфиденциальности в любое время. Чтобы узнать больше о том, какие сообщения видят ваши пользователи в точке входа параметров конфиденциальности, см. раздел «Доступные типы сообщений для пользователей» .
Проверьте, требуется ли точка входа для настроек конфиденциальности.
После вызова requestConsentInfoUpdate() проверьте значение getPrivacyOptionsRequirementStatus() , чтобы определить, требуется ли точка входа для параметров конфиденциальности в вашем приложении. Если точка входа необходима, добавьте в приложение видимый и интерактивный элемент пользовательского интерфейса, отображающий форму параметров конфиденциальности. Если точка входа не требуется, настройте элемент пользовательского интерфейса так, чтобы он был невидимым и интерактивным.
/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
return await ConsentInformation.instance
.getPrivacyOptionsRequirementStatus() ==
PrivacyOptionsRequirementStatus.required;
}
Полный список статусов требований к параметрам конфиденциальности см. в разделе .PrivacyOptionsRequirementStatus
Предъявите форму выбора параметров конфиденциальности
Когда пользователь взаимодействует с вашим элементом, отобразите форму с параметрами конфиденциальности:
ConsentForm.showPrivacyOptionsForm((formError) {
if (formError != null) {
debugPrint("${formError.errorCode}: ${formError.message}");
}
});
Запрос рекламы с согласия пользователя.
Перед запросом рекламы используйте canRequestAds() , чтобы проверить, получили ли вы согласие пользователя:
await ConsentInformation.instance.canRequestAds()
Ниже перечислены места, где можно проверить, можно ли запрашивать рекламу, одновременно получая согласие на ее показ:
- После того, как UMP SDK получит согласие в текущей сессии.
- Сразу после вызова
requestConsentInfoUpdate(), SDK UMP мог получить согласие в предыдущей сессии приложения.
Если в процессе сбора согласия возникает ошибка, проверьте, можете ли вы запрашивать рекламу. UMP SDK использует статус согласия из предыдущей сессии приложения.
Предотвращение избыточной работы по запросу рекламы.
При проверке canRequestAds() после получения согласия и после вызова requestConsentInfoUpdate() убедитесь, что ваша логика предотвращает избыточные запросы рекламы, которые могут привести к тому, что обе проверки вернут true . Например, с помощью логической переменной.
Тестирование
Если вы хотите протестировать интеграцию в своем приложении во время разработки, выполните следующие шаги для программной регистрации тестового устройства. Обязательно удалите код, который устанавливает идентификаторы этих тестовых устройств, прежде чем выпускать приложение.
- Вызовите функцию
requestConsentInfoUpdate(). Проверьте журнал событий на наличие сообщения, похожего на следующий пример, в котором указан идентификатор вашего устройства и инструкция по его добавлению в качестве тестового устройства:
Android
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.iOS
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]Скопируйте идентификатор вашего тестового устройства в буфер обмена.
Измените свой код таким образом, чтобы он вызывал метод
ConsentDebugSettings.testIdentifiersи передавал список идентификаторов ваших тестовых устройств.ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
Принудительное использование географии
UMP SDK предоставляет возможность тестировать поведение вашего приложения, как если бы устройство находилось в различных регионах, например, в ЕЭЗ или Великобритании, используя debugGeography . Обратите внимание, что настройки отладки работают только на тестовых устройствах.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
Сбросить состояние согласия
При тестировании вашего приложения с помощью UMP SDK вам может быть полезно сбросить состояние SDK, чтобы имитировать первый опыт установки для пользователя. Для этого SDK предоставляет метод reset() .
ConsentInformation.instance.reset();
Примеры на GitHub
Полный пример интеграции UMP SDK, описанный на этой странице, можно найти в наших примерах Flutter .