Рекламные баннеры

Выберите платформу: Android (бета-версия)Новый Android iOS Unity Flutter

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

В этом руководстве рассматривается загрузка адаптивного баннерного объявления с привязкой к определенному объекту в приложение для Android.

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

  • Пройдите руководство по началу работы .
  • Необязательно: для примера реализации баннерной рекламы выберите одно из следующих приложений-примеров:
    • Пример адаптивных баннерных объявлений с привязкой к тегам Java , Kotlin или Jetpack Compose .
    • Демонстрация расширенных возможностей Java или Kotlin .

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

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

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

ca-app-pub-3940256099942544/9214589741

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

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

Определите показ объявления

XML-макет

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

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Композитор Jetpack

  1. Включите модуль JetpackComposeDemo/compose-util . Этот модуль содержит вспомогательные функции для компоновки объекта AdView и его ресурсов.

  2. Создайте класс BannerAd с помощью модуля compose-util :


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

Установите размер объявления

Установите AdSize на адаптивный баннер с привязкой к определенному типу и заданной шириной:

Java

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Котлин

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Композитор Jetpack


// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

Добавьте AdView в макет.

Создайте элемент AdView , используя заданный размер объявления, чтобы добавить его в макет вашего приложения:

Java


// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);

Котлин


// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Композитор Jetpack


val adView = remember { AdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID

// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

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

После того, как AdView размещен, следующим шагом является загрузка объявления. Это делается с помощью метода loadAd() в классе AdView . Он принимает параметр AdRequest , который содержит информацию о текущем состоянии, например, данные о таргетинге, для одного запроса объявления.

Вот пример, демонстрирующий, как загрузить рекламу:

Java

AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);

Котлин

val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

В случае успеха ваше приложение готово к показу баннерной рекламы.

Обновить рекламу

Если вы настроили автоматическое обновление рекламного блока, вам не нужно запрашивать новый рекламный блок, если предыдущий не загрузился. Google Mobile Ads SDK учитывает любую частоту обновления, указанную вами в пользовательском интерфейсе AdMob. Если вы не включили автоматическое обновление, отправьте новый запрос. Для получения более подробной информации об обновлении рекламного блока, например, о настройке частоты обновления, см. раздел «Использование автоматического обновления для баннерной рекламы» .

Разместите рекламный ресурс

По завершении показа баннерной рекламы вы можете освободить ее ресурсы.

Чтобы освободить ресурсы объявления, необходимо удалить объявление из иерархии представлений и удалить все ссылки на него:

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Котлин

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

Рекламные мероприятия

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

Java

if (adView != null) {
  adView.setAdListener(
      new AdListener() {
        @Override
        public void onAdClicked() {
          // Code to be executed when the user clicks on an ad.
        }

        @Override
        public void onAdClosed() {
          // Code to be executed when the user is about to return
          // to the app after tapping on an ad.
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          // Code to be executed when an ad request fails.
        }

        @Override
        public void onAdImpression() {
          // Code to be executed when an impression is recorded
          // for an ad.
        }

        @Override
        public void onAdLoaded() {
          // Code to be executed when an ad finishes loading.
        }

        @Override
        public void onAdOpened() {
          // Code to be executed when an ad opens an overlay that
          // covers the screen.
        }
      });
}

Котлин

adView?.adListener =
  object : AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
  }

Каждый из переопределяемых методов в AdListener соответствует событию в жизненном цикле объявления.

Переопределяемые методы
onAdClicked() Метод onAdClicked() вызывается при регистрации клика по объявлению.
onAdClosed() Метод onAdClosed() вызывается, когда пользователь возвращается в приложение после просмотра целевого URL-адреса рекламы. Ваше приложение может использовать его для возобновления приостановленных действий или выполнения любой другой работы, необходимой для подготовки к взаимодействию. Пример реализации методов прослушивания рекламы можно найти в примере AdMob AdListener в демонстрационном приложении Android API.
onAdFailedToLoad() Метод onAdFailedToLoad() — единственный, который принимает параметр. Параметр error типа LoadAdError описывает, какая ошибка произошла. Для получения дополнительной информации обратитесь к документации по отладке ошибок загрузки рекламы .
onAdImpression() Метод onAdImpression() вызывается при регистрации показа объявления.
onAdLoaded() Метод onAdLoaded() выполняется после завершения загрузки рекламы. Например, если вы хотите отложить добавление AdView в вашу активность или фрагмент до тех пор, пока не убедитесь, что реклама будет загружена, вы можете сделать это здесь.
onAdOpened() Метод onAdOpened() вызывается, когда открывается рекламное объявление в виде всплывающего окна, закрывающего весь экран.

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

Для корректного отображения видеорекламы в баннерах необходимо включить аппаратное ускорение .

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

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

Если ваше приложение работает некорректно при глобально включенном аппаратном ускорении, вы можете управлять им и для отдельных активностей. Чтобы включить или отключить аппаратное ускорение, используйте атрибут 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>

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

Следующие шаги

Складные баннеры

Сворачиваемые баннеры — это баннеры, которые изначально отображаются в виде увеличенного всплывающего окна с кнопкой для сворачивания объявления до меньшего размера. Рекомендуется использовать их для дальнейшей оптимизации производительности. Подробнее см. в разделе «Сворачиваемые баннеры» .

Встроенные адаптивные баннеры

Встроенные адаптивные баннеры — это более крупные и высокие баннеры по сравнению с привязанными адаптивными баннерами. Их высота может быть переменной и соответствовать высоте экрана устройства. Встроенные адаптивные баннеры рекомендуются вместо привязанных адаптивных баннеров для приложений, размещающих баннерную рекламу в прокручиваемом контенте. Подробнее см. в разделе «Встроенные адаптивные баннеры» .

Изучите другие темы