Настройка баннерной рекламы, Настройка баннерной рекламы

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

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

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

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

  • Настройте Google Mobile Ads SDK .
  • (Необязательно) Для примера реализации баннерной рекламы выберите одно из следующих приложений-примеров:
    • Пример адаптивных баннерных объявлений с привязкой к тегам 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 a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));

Котлин


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

Композитор Jetpack


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

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

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

Java


// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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 a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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 a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(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 загружается адаптивный баннер с привязкой к рекламному блоку шириной 360 пикселей:

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>

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

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

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

Collapsible banner ads are banner ads that are initially presented as a larger overlay, with a button to collapse the ad to a smaller size. Consider using it to further optimize your performance. See collapsible banner ads for more details.

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

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

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