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

Выберите платформу: 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" />

Составить реактивный ранец

  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 для привязанного адаптивного типа баннера с указанной шириной:

Ява

// 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))

Составить реактивный ранец


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

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

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

Ява

// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// 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 = AdManagerAdView(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)

Составить реактивный ранец


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 , который содержит информацию о времени выполнения, например, информацию о таргетинге, об одном запросе рекламы.

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

Ява

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

Котлин

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

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

Обновить объявление

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

Освободить рекламный ресурс

Закончив использование рекламного баннера, вы можете освободить его ресурсы.

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

Котлин

// 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

Ява

// Remove banner from view hierarchy.
if (adView.getParent() instanceof ViewGroup) {
  ((ViewGroup) adView.getParent()).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
// Drop reference to the banner ad.
adView = null;

Составить реактивный ранец


DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

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

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

Ява

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(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-адреса рекламы. Ваше приложение может использовать его для возобновления приостановленных действий или выполнения любой другой работы, необходимой для подготовки к взаимодействию. Реализацию методов прослушивателя рекламы в приложении Android API Demo см. в примере AdMob AdListener.
onAdFailedToLoad() Метод onAdFailedToLoad() — единственный, который включает параметр. Параметр error типа LoadAdError описывает, какая ошибка произошла. Для получения дополнительной информации обратитесь к документации Debugging Ad Load Errors .
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>

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

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

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

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

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

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

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