Нативная реклама

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

Когда загружается нативное объявление, ваше приложение получает объект объявления, содержащий его ресурсы, и за их отображение отвечает приложение, а не Google Mobile Ads SDK.

Грубо говоря, успешная реализация нативной рекламы состоит из двух частей: загрузка рекламы с помощью SDK и последующее отображение рекламного контента в вашем приложении.

На этой странице показано, как использовать SDK для загрузки нативной рекламы .

Предварительные условия

Всегда тестируйте с помощью тестовых объявлений

При создании и тестировании приложений убедитесь, что вы используете тестовые объявления, а не действующие, рабочие.

Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для нативной рекламы на Android:

/6499/example/native

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

Дополнительную информацию о том, как работают тестовые объявления Google Mobile Ads SDK, см. в разделе Тестовые объявления .

Загрузить рекламу

Нативные объявления загружаются с помощью класса AdLoader , который имеет собственный класс Builder для настройки его во время создания. Добавляя прослушиватели в AdLoader при его создании, приложение указывает, какие типы нативной рекламы оно готово получать. Затем AdLoader запрашивает только эти типы.

Создайте AdLoader

Следующий код демонстрирует, как создать AdLoader , который может загружать нативную рекламу:

Джава

AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Котлин

val adLoader = AdLoader.Builder(this, "/6499/example/native")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Метод forNativeAd() отвечает за подготовку AdLoader к формату NativeAd . После успешной загрузки объявления вызывается метод onNativeAdLoaded() объекта-прослушивателя.

Настройте AdListener с помощью AdLoader (необязательно)

При создании AdLoader функция withAdListener устанавливает AdListener для загрузчика. Метод принимает AdListener в качестве единственного параметра, который получает обратные вызовы от AdLoader при возникновении событий жизненного цикла объявления:

Джава

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Котлин

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Запросить рекламу

После того, как вы закончили создание AdLoader , пришло время использовать его для запроса рекламы. Используйте метод loadAd() , который принимает объект AdManagerAdRequest в качестве первого параметра. Это тот же класс AdManagerAdRequest который используется в баннерах и межстраничных объявлениях. Вы можете использовать методы класса AdManagerAdRequest для добавления информации о таргетинге , как и в случае с другими форматами объявлений.

loadAd()

Этот метод отправляет запрос на одно объявление.

Джава

adLoader.loadAd(new AdManagerAdRequest.Builder().build());

Котлин

adLoader.loadAd(AdManagerAdRequest.Builder().build())

Обратные вызовы

После вызова метода loadAd() выполняется один обратный вызов ранее определенных методов прослушивателя , чтобы доставить собственный объект объявления или сообщить об ошибке.

Освободить ресурсы

Обязательно используйте метод destroy() для загруженных нативных объявлений. Это освобождает используемые ресурсы и предотвращает утечки памяти.

Убедитесь, что все ссылки NativeAd уничтожены в методе onDestroy() вашего действия.

В обратном вызове onNativeAdLoaded обязательно удалите все существующие нативные объявления, которые будут разыменованы.

Еще одна ключевая проверка — уничтожено ли действие, и если да, вызовите destroy() для возвращенного объявления и немедленно вернитесь:

Джава

final AdLoader adLoader = new AdLoader.Builder(this, "/6499/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Котлин

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/6499/example/native")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

Лучшие практики

Следуйте этим правилам при загрузке рекламы.

  • Приложения, использующие нативную рекламу в списке, должны предварительно кэшировать список рекламы.

  • При предварительном кэшировании рекламы очистите кеш и перезагрузите его через час.

  • Не вызывайте loadAd() в AdLoader до тех пор, пока не завершится загрузка первого запроса.

Аппаратное ускорение видеорекламы

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

Аппаратное ускорение включено по умолчанию, но некоторые приложения могут отключить его. Если это применимо к вашему приложению, мы рекомендуем включить аппаратное ускорение для классов активности, использующих рекламу.

Включение аппаратного ускорения

Если ваше приложение не работает должным образом при глобальном включении аппаратного ускорения, вы также можете контролировать его для отдельных действий. Чтобы включить или отключить аппаратное ускорение, используйте атрибут android:hardwareAccelerated для элементов <application> и <activity> в файле AndroidManifest.xml . В следующем примере аппаратное ускорение включается для всего приложения, но отключается для одного действия:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

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

Покажите свое объявление

После того как вы загрузили рекламу, остается только показать ее вашим пользователям. Ознакомьтесь с нашим руководством по Native Advanced , чтобы узнать, как это сделать.