SDK Google User Messaging Platform (UMP) — это инструмент для управления конфиденциальностью и обменом сообщениями, который поможет вам управлять настройками конфиденциальности. Подробнее см. в разделе «Конфиденциальность и обмен сообщениями» .
Создайте тип сообщения
Создайте пользовательские сообщения, используя один из доступных типов сообщений на вкладке «Конфиденциальность и сообщения» вашего аккаунта AdMob. UMP SDK пытается отобразить сообщение о конфиденциальности, созданное на основе идентификатора приложения AdMob, заданного в вашем проекте.
Более подробную информацию см. в разделе О конфиденциальности и обмене сообщениями .
Получить информацию о согласии пользователя
 Вам следует запрашивать обновление информации о согласии пользователя при каждом запуске приложения с помощью Update() . Этот запрос проверяет следующее:
- Требуется ли согласие . Например, согласие требуется впервые или срок действия предыдущего решения о согласии истек.
- Требуется ли точка входа в параметры конфиденциальности ? Некоторые сообщения о конфиденциальности требуют, чтобы приложения позволяли пользователям изменять параметры конфиденциальности в любое время.
void Start()
{
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters();
    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}
void OnConsentInfoUpdated(FormError consentError)
{
    // If the error is null, the consent information state was updated.
    if (consentError != null)
    {
        // Handle the error.
        UnityEngine.Debug.LogError(consentError);
        return;
    }
}
Загрузите и представьте форму сообщения о конфиденциальности
 Получив актуальную информацию о статусе согласия, вызовите метод LoadAndShowConsentFormIfRequired() чтобы загрузить все формы, необходимые для получения согласия пользователя. После загрузки формы отображаются немедленно.
void Start()
{
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters();
    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}
void OnConsentInfoUpdated(FormError consentError)
{
    if (consentError != null)
    {
        // Handle the error.
        UnityEngine.Debug.LogError(consentError);
        return;
    }
    // If the error is null, the consent information state was updated.
    // You are now ready to check if a form is available.
    ConsentForm.LoadAndShowConsentFormIfRequired((FormError formError) =>
    {
        if (formError != null)
        {
            // Consent gathering failed.
            UnityEngine.Debug.LogError(consentError);
            return;
        }
        // Consent has been gathered.
    });
}
Параметры конфиденциальности
Некоторые формы сообщений о конфиденциальности отображаются в точке входа параметров конфиденциальности, созданной издателем, что позволяет пользователям управлять своими настройками в любое время. Подробнее о том, какие сообщения пользователи видят в точке входа параметров конфиденциальности, см. в разделе Доступные типы сообщений для пользователей .
Чтобы реализовать точку входа в параметры конфиденциальности, выполните следующие действия:
-  После вызова Update()проверьтеPrivacyOptionsRequirementStatus, чтобы определить, требуется ли точка входа параметров конфиденциальности.
- При необходимости добавьте в приложение видимый и интерактивный элемент пользовательского интерфейса, который будет служить точкой входа в настройки конфиденциальности. Если точка входа в настройки конфиденциальности не требуется, настройте элемент пользовательского интерфейса так, чтобы он не был видимым и интерактивным.
-  Представьте форму параметров конфиденциальности с помощью ShowPrivacyOptionsForm().
Следующий пример кода демонстрирует эти шаги:
[SerializeField, Tooltip("Button to show the privacy options form.")]
private Button _privacyButton;
private void Start()
{
  // Enable the privacy settings button.
  if (_privacyButton != null)
  {
      _privacyButton.onClick.AddListener(UpdatePrivacyButton);
      // Disable the privacy settings button by default.
      _privacyButton.interactable = false;
  }
}
/// <summary>
/// Shows the privacy options form to the user.
/// </summary>
public void ShowPrivacyOptionsForm()
{
    Debug.Log("Showing privacy options form.");
    ConsentForm.ShowPrivacyOptionsForm((FormError showError) =>
    {
        if (showError != null)
        {
            Debug.LogError("Error showing privacy options form with error: " + showError.Message);
        }
        // Enable the privacy settings button.
        UpdatePrivacyButton();
    });
}
/// <summary>
/// Updates the privacy buttons visual state based on the consent information.
/// </summary>
void UpdatePrivacyButton()
{
    if (_privacyButton != null)
    {
        _privacyButton.interactable =
            ConsentInformation.PrivacyOptionsRequirementStatus ==
                PrivacyOptionsRequirementStatus.Required;
    }
}
Запрос рекламы с согласия пользователя
 Прежде чем запрашивать рекламу, используйте CanRequestAds() чтобы проверить, получили ли вы согласие пользователя:
Ниже перечислены места, где можно проверить, можете ли вы запрашивать рекламу при получении согласия:
- После того, как UMP SDK соберет согласие в текущем сеансе.
-  Сразу после вызова Update(). UMP SDK мог получить согласие в предыдущем сеансе приложения.
Если во время сбора согласия произошла ошибка, проверьте, можете ли вы запрашивать рекламу. UMP SDK использует статус согласия из предыдущего сеанса приложения.
void Start()
{
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters();
    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}
void OnConsentInfoUpdated(FormError consentError)
{
    if (consentError != null)
    {
        // Handle the error.
        UnityEngine.Debug.LogError(consentError);
        return;
    }
    // If the error is null, the consent information state was updated.
    // You are now ready to check if a form is available.
    ConsentForm.LoadAndShowConsentFormIfRequired((FormError formError) =>
    {
        if (formError != null)
        {
            // Consent gathering failed.
            UnityEngine.Debug.LogError(consentError);
            return;
        }
        // Consent has been gathered.
        if (ConsentInformation.CanRequestAds())
        {
            MobileAds.Initialize((InitializationStatus initstatus) =>
            {
              // TODO: Request an ad.
            });
        }
    });
    
}
Тестирование
Если вы хотите протестировать интеграцию в своём приложении в процессе разработки, выполните следующие шаги для программной регистрации тестового устройства. Перед выпуском приложения обязательно удалите код, задающий идентификаторы тестовых устройств.
-  Вызовите Update().
- Проверьте вывод журнала на наличие сообщения, похожего на следующее, в котором указан идентификатор вашего устройства и порядок его добавления в качестве тестового устройства: - Андроид- 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]
- Скопируйте идентификатор тестового устройства в буфер обмена. 
- Измените свой код так, чтобы он вызывал - DebugGeography.TestDeviceHashedIdsи передавал список идентификаторов тестовых устройств.- void Start() { var debugSettings = new ConsentDebugSettings { TestDeviceHashedIds = new List<string> { "TEST-DEVICE-HASHED-ID" } }; // Create a ConsentRequestParameters object. ConsentRequestParameters request = new ConsentRequestParameters { ConsentDebugSettings = debugSettings, }; // Check the current consent information status. ConsentInformation.Update(request, OnConsentInfoUpdated); }
Навязать географию
 UMP SDK позволяет протестировать поведение приложения, как если бы устройство находилось в различных регионах, например, в ЕЭЗ или Великобритании, с помощью DebugGeography . Обратите внимание, что настройки отладки работают только на тестовых устройствах.
void Start()
{
    var debugSettings = new ConsentDebugSettings
    {
        // Geography appears as in EEA for debug devices.
        DebugGeography = DebugGeography.EEA,
        TestDeviceHashedIds = new List<string>
        {
            "TEST-DEVICE-HASHED-ID"
        }
    };
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters
    {
        ConsentDebugSettings = debugSettings,
    };
    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}
Сбросить состояние согласия
 При тестировании приложения с помощью UMP SDK может быть полезно сбросить состояние SDK, чтобы имитировать первую установку приложения пользователем. Для этого в SDK предусмотрен метод Reset() .
ConsentInformation.Reset();
Примеры на GitHub
Полный пример интеграции UMP SDK, описанный на этой странице, см. в HelloWorld .