В этом руководстве рассматривается загрузка прикрепленного адаптивного баннера в приложение для 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 Compose
Включите модуль JetpackComposeDemo/compose-util . Этот модуль включает в себя вспомогательные инструменты для компоновки объекта
AdViewи ресурсов.Создайте класс
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))
Jetpack Compose
// 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 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 Compose
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 , содержащий информацию времени выполнения, например, данные о таргетинге, об одном запросе рекламы.
Вот пример, показывающий, как загрузить рекламу:
Ява
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Котлин
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
В случае успеха ваше приложение готово к показу баннерной рекламы.
Обновить объявление
Если вы настроили обновление рекламного блока, вам не нужно запрашивать повторное объявление, если предыдущее не загружается. Google Mobile Ads SDK учитывает любую частоту обновления, указанную в пользовательском интерфейсе AdMob. Если обновление не включено, отправьте новый запрос. Подробнее об обновлении рекламного блока, например, о настройке частоты обновления, см. в статье Использование автоматического обновления для баннерной рекламы .
Выпуск рекламного ресурса
После завершения использования рекламного баннера вы можете освободить его ресурсы.
Чтобы освободить ресурс объявления, необходимо удалить объявление из иерархии представлений и удалить все его ссылки:
Ява
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
}
Рекламные события
Вы можете отслеживать ряд событий жизненного цикла объявления, включая загрузку, показ и клик по объявлению, а также открытие и закрытие объявления. Рекомендуется настроить обратный вызов до загрузки баннера.Ява
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 в Activity или фрагмент, например, до тех пор, пока не будете уверены, что реклама будет загружена, это можно сделать здесь. |
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>
Дополнительную информацию о параметрах управления аппаратным ускорением см. в руководстве по аппаратному ускорению . Обратите внимание, что аппаратное ускорение для отдельных показов рекламы невозможно включить, если активность отключена, поэтому для самой активности необходимо включить аппаратное ускорение.
Следующие шаги
Складные баннеры
Сворачиваемые баннеры — это баннеры, которые изначально отображаются в виде увеличенного наложения с кнопкой, позволяющей свернуть объявление до меньшего размера. Рассмотрите возможность использования этого варианта для дальнейшей оптимизации эффективности. Подробнее см. в разделе «Сворачиваемые баннеры» .
Встроенные адаптивные баннеры
Встроенные адаптивные баннеры крупнее и выше, чем закреплённые адаптивные баннеры. Они имеют переменную высоту, которая может достигать высоты экрана устройства. Встроенные адаптивные баннеры рекомендуются для приложений, размещающих рекламу в прокручиваемом контенте, а не закреплённые адаптивные баннеры. Подробнее см. в разделе «Встроенные адаптивные баннеры» .