Начать

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
-placeholder

В соответствии с Политикой Google в отношении согласия пользователей из ЕС вы должны раскрывать определенную информацию своим пользователям в Европейской экономической зоне (ЕЭЗ), а также в Великобритании, и получать их согласие на использование файлов cookie или других локальных хранилищ, если это требуется по закону, а также на использование персональных данных ( например AdID) для показа рекламы. Эта политика отражает требования Директивы ЕС по электронной конфиденциальности и Общего регламента по защите данных (GDPR).

Чтобы помочь издателям выполнять свои обязанности в соответствии с этой политикой, Google предлагает SDK User Messaging Platform (UMP). UMP SDK был обновлен для поддержки последних стандартов IAB. Все эти конфигурации теперь можно удобно обрабатывать в AdMob конфиденциальности и обмене сообщениями.

Предпосылки

Типы пользовательских сообщений

Полный список поддерживаемых сообщений см. в разделеТипы пользовательских сообщений. Конкретные инструкции по реализации каждого типа сообщений см. на левой панели навигации.

Установить с помощью Gradle

Если вы используете Google Mobile Ads SDK версии 19.8.0 или более поздней, UMP SDK входит в ваш пакет. Если вы используете более раннюю версию Mobile Ads SDK, включите UMP SDK в build.gradle вашего приложения следующим образом:

dependencies {
    // This dependency is automatically included by Google Mobile Ads SDK 19.8.0
    // or higher.
    implementation 'com.google.android.ump:user-messaging-platform:2.0.0'
}

После внесения изменений в файл build.gradle вашего приложения обязательно синхронизируйте проект с файлами Gradle.

Затемнайдите идентификатор своего приложенияи добавьте его в свой AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.rewardedinterstitialexample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <!-- Sample app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Определите, нужно ли отображать сообщение

Вы должны запрашивать обновление информации о согласии пользователя при каждом запуске приложения, используя requestConsentInfoUpdate() перед загрузкой формы. Это может определить, должен ли ваш пользователь предоставить согласие, если он еще не сделал этого или если срок его согласия истек.

Используйте информацию, хранящуюся в объекте consentInformation, когда вы представляете форму , когда это необходимо.

Вот пример того, как проверить статус при запуске приложения:

Джава

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.google.android.ump.ConsentForm;
import com.google.android.ump.ConsentInformation;
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.FormError;
import com.google.android.ump.UserMessagingPlatform;

public class MainActivity extends AppCompatActivity {
    private ConsentInformation consentInformation;
    private ConsentForm consentForm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set tag for under age of consent. false means users are not under
        // age.
        ConsentRequestParameters params = new ConsentRequestParameters
            .Builder()
            .setTagForUnderAgeOfConsent(false)
            .build();

        consentInformation = UserMessagingPlatform.getConsentInformation(this);
        consentInformation.requestConsentInfoUpdate(
            this,
            params,
            new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
                @Override
                public void onConsentInfoUpdateSuccess() {
                    // The consent information state was updated.
                    // You are now ready to check if a form is available.
                }
            },
            new ConsentInformation.OnConsentInfoUpdateFailureListener() {
                @Override
                public void onConsentInfoUpdateFailure(FormError formError) {
                    // Handle the error.
                }
            });
    }
}

Котлин

Coming soon.

Загрузите форму, если она доступна

Прежде чем отображать форму, сначала необходимо определить, доступна ли она. Недоступность форм может быть связана с тем, что пользователь включил ограниченное отслеживание рекламы или если вы пометили их как не достигших возраста согласия.

Чтобы проверить доступность формы, используйте созданный ранееthe isConsentFormAvailable() method on the ConsentInformation instance .

Затем добавьте метод-оболочку для загрузки формы:

Джава

...
       consentInformation.requestConsentInfoUpdate(
           this,
           params,
           new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
               @Override
               public void onConsentInfoUpdateSuccess() {
                   // The consent information state was updated.
                   // You are now ready to check if a form is available.
                   if (consentInformation.isConsentFormAvailable()) {
                       loadForm();
                   }
               }
           },
           new ConsentInformation.OnConsentInfoUpdateFailureListener() {
               @Override
               public void onConsentInfoUpdateFailure(FormError formError) {
                   // Handle the error.

               }
            });
    }

    public void loadForm() {

    }
}

Котлин

Coming soon.

Чтобы загрузить форму, используйте the static loadConsentForm() method on the UserMessagingPlatform class.

Джава

public void loadForm() {
    // Loads a consent form. Must be called on the main thread.
    UserMessagingPlatform.loadConsentForm(
        this,
        new UserMessagingPlatform.OnConsentFormLoadSuccessListener() {
            @Override
            public void onConsentFormLoadSuccess(ConsentForm consentForm) {
                MainActivity.this.consentForm = consentForm;
            }
        },
        new UserMessagingPlatform.OnConsentFormLoadFailureListener() {
            @Override
            public void onConsentFormLoadFailure(FormError formError) {
                // Handle the error
            }
        }
    );
}

Котлин

Coming soon.

Предъявите форму, если требуется

После того как вы определили доступность формы и загрузили ее, используйте методshow() ConsentForm для экземпляра l10n-placeholder95, чтобы представить форму.

Используйте ранее созданный объектconsentInformation , чтобы проверитьconsent status и обновить методloadForm() :

Джава

public void loadForm() {
    UserMessagingPlatform.loadConsentForm(
        this,
        new UserMessagingPlatform.OnConsentFormLoadSuccessListener() {
            @Override
            public void onConsentFormLoadSuccess(ConsentForm consentForm) {
                MainActivity.this.consentForm = consentForm;
                if(consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.REQUIRED) {
                    consentForm.show(
                        MainActivity.this,
                            new ConsentForm.OnConsentFormDismissedListener() {
                                @Override
                                public void onConsentFormDismissed(@Nullable FormError formError) {
                                    // Handle dismissal by reloading form.
                                    loadForm();
                                }
                            });

                }

            }
        },
        new UserMessagingPlatform.OnConsentFormLoadFailureListener() {
            @Override
            public void onConsentFormLoadFailure(FormError formError) {
                /// Handle Error.
            }
        }
   );
}

Котлин

Coming soon.

Если вам нужно выполнить какие-либо действия после того, как пользователь сделал выбор или закрыл форму, поместите эту логику в обработчик завершения или обратный вызов для вашей формы.

Тестирование

Заставить географию

UMP SDK позволяет протестировать поведение вашего приложения, как если бы устройство находилось в ЕЭЗ или Великобритании, с помощью the setDebugGeography method on ConsentDebugSettings.Builder.

Вы должны указать хэш-идентификатор вашего тестового устройства в настройках отладки вашего приложения, чтобы использовать функции отладки. Если вы вызываетеrequestConsentInfoUpdate() без установки этого значения, ваше приложение регистрирует требуемый хэш идентификатора при запуске.

Джава

ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings
    .DebugGeography
    .DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build();

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(this, params,
    new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
        @Override
        public void onConsentInfoUpdateSuccess() {
            // The consent information state was updated.
            // You are now ready to check if a form is available.
        }
    },
    new ConsentInformation.OnConsentInfoUpdateFailureListener() {
        @Override
        public void onConsentInfoUpdateFailure(FormError formError) {
            // Handle the error.
        }
    });

Котлин

Coming soon.

С помощью DebugGeographyу вас есть возможность принудительно указать географию в одном из следующих вариантов:

DebugGeography Описание
DEBUG_GEOGRAPHY_DISABLED География отладки отключена.
DEBUG_GEOGRAPHY_EEA География отображается как в ЕЭЗ для отладочных устройств.
DEBUG_GEOGRAPHY_NOT_EEA Географическое положение отображается как не входящее в ЕЭЗ для устройств отладки.

Обратите внимание, что настройки отладки работают только на тестовых устройствах. Эмуляторы не нужно добавлять в список идентификаторов устройств, так как для них уже включено тестирование по умолчанию.

При тестировании приложения с помощью UMP SDK может оказаться полезным сбросить состояние SDK, чтобы можно было имитировать первую установку пользователя. SDK предоставляет для этого метод reset() .

Джава

consentInformation.reset();

Котлин

consentInformation.reset()

Вам также следует вызвать reset() , если вы решите полностью удалить UMP SDK из своего проекта.