SDK платформы обмена сообщениями Google (UMP) — это инструмент для управления настройками конфиденциальности и обмена сообщениями. Дополнительную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Создайте тип сообщения
Create user messages with one of the Available user message types under the Privacy & messaging tab of your Ad Manager account. The UMP SDK attempts to display a privacy message created from the Ad Manager Application ID set in your project.
Более подробную информацию см. в разделе «О конфиденциальности и обмене сообщениями» .
Получите информацию о согласии пользователя.
При каждом запуске приложения следует запрашивать обновление информации о согласии пользователя, используя 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.
},
);
}
Загрузите и отобразите форму сообщения о конфиденциальности.
After you have received the most up-to-date consent status, call loadAndShowConsentFormIfRequired() to load any forms required to collect user consent. After loading, the forms present immediately.
@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.
},
);
}
Параметры конфиденциальности
Some privacy message forms are presented from a publisher-rendered privacy options entry point, letting users manage their privacy options at any time. To learn more about which message your users see at the privacy options entry point, see Available user message types .
Проверьте, требуется ли точка входа для настроек конфиденциальности.
После вызова 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 использует статус согласия из предыдущей сессии приложения.
Предотвращение избыточной работы по запросу рекламы.
As you check canRequestAds() after gathering consent and after calling requestConsentInfoUpdate() , ensure your logic prevents redundant ad requests that might result in both checks returning true . For example, with a boolean variable.
Тестирование
If you want to test the integration in your app as you're developing, follow these steps to programmatically register your test device. Be sure to remove the code that sets these test device IDs before you release your app.
- Вызовите функцию
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 { // ... };
Принудительное использование географии
The UMP SDK provides a way to test your app's behavior as though the device were located in various regions, such as the European Economic Area (EEA), the United Kingdom (UK), and Switzerland using debugGeography . Note that debug settings only work on test devices.
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
Сбросить состояние согласия
When testing your app with the UMP SDK, you might find it helpful to reset the state of the SDK so that you can simulate a user's first install experience. The SDK provides the reset() method to do this.
ConsentInformation.instance.reset();
Примеры на GitHub
Полный пример интеграции UMP SDK, описанный на этой странице, можно найти в наших примерах Flutter .