В этом руководстве рассматривается загрузка привязанного адаптивного баннера в приложение Android.
Предпосылки
- Заполните руководство по началу работы .
Всегда проводите тестирование с помощью тестовых объявлений
При создании и тестировании приложений убедитесь, что вы используете тестовые объявления, а не живые, производственные объявления. Невыполнение этого требования может привести к блокировке вашего аккаунта.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для баннеров Android:
/21775744923/example/adaptive-banner
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при кодировании, тестировании и отладке. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Дополнительную информацию о том, как работают тестовые объявления 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" />
Составить реактивный ранец
Шаг первый, включите модуль 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()) { AdManagerBannerAd(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)
Добавьте AdManagerAdView
в макет
Создайте AdManagerAdView
, используя размер объявления, чтобы добавить его в макет вашего приложения:
Ява
// 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 { AdManagerAdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANANGER_ADAPTIVE_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()) { AdManagerBannerAd(adView, modifier) }
}
Загрузить объявление
После того, как AdManagerAdView
будет готов, следующим шагом будет загрузка рекламы. Это делается с помощью метода loadAd()
в классе AdManagerAdView
. Он принимает параметр AdManagerAdRequest
, который содержит информацию о времени выполнения, например, информацию о таргетинге, об одном запросе рекламы.
Вот пример, показывающий, как загрузить рекламу:
Ява
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
Котлин
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
В случае успеха ваше приложение готово к показу рекламных баннеров.
Обновить объявление
Если вы настроили обновление рекламного блока, вам не нужно запрашивать другое объявление, если объявление не загружается. Google Mobile Ads SDK учитывает любую частоту обновления, указанную вами в пользовательском интерфейсе Менеджера объявлений. Если вы не включили обновление, отправьте новый запрос. Для получения дополнительных сведений об обновлении рекламного блока, например, о настройке частоты обновления, см. раздел Частота обновления для объявлений в мобильных приложениях .
Освободить рекламный ресурс
Закончив использование рекламного баннера, вы можете освободить его ресурсы.
Чтобы освободить ресурс объявления, необходимо удалить объявление из иерархии представлений и удалить все его ссылки:
Котлин
// 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 s 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-адреса рекламы. Ваше приложение может использовать его для возобновления приостановленных действий или выполнения любой другой работы, необходимой для подготовки к взаимодействию. |
onAdFailedToLoad() | Метод onAdFailedToLoad() — единственный, который включает параметр. Параметр error типа LoadAdError описывает, какая ошибка произошла. Для получения дополнительной информации обратитесь к документации Debugging Ad Load Errors . |
onAdImpression() | Метод onAdImpression() вызывается при регистрации показа рекламы. |
onAdLoaded() | Метод onAdLoaded() выполняется, когда загрузка рекламы завершена. Если вы хотите отложить добавление AdManagerAdView в вашу активность или фрагмент, пока не будете уверены, что реклама будет загружена, например, вы можете сделать это здесь. |
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>
Дополнительную информацию о параметрах управления аппаратным ускорением см. в руководстве по аппаратному ускорению. Обратите внимание, что отдельные просмотры рекламы не могут быть включены для аппаратного ускорения, если активность отключена, поэтому сама активность должна иметь включенное аппаратное ускорение.
Ручной подсчет показов
Ручной подсчет показов совместим только с кампаниями с прямыми продажами и собственными кампаниями с креативами, размещенными напрямую в Ad Manager. Его не следует использовать для заполнения или рекламы сторонних сетей. Более подробную информацию см. в разделе Подсчет показов и кликов .
Вы можете вручную отправлять пинги показов в Ad Manager, если у вас есть особые условия, когда должен быть зафиксирован показ. Для этого включите AdManagerAdRequest
для ручных показов перед загрузкой рекламы:
Ява
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
Котлин
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
Когда вы определите, что объявление было успешно возвращено и находится на экране, вы можете вручную зарегистрировать показ:
Ява
AdManagerAdView.recordManualImpression();
Котлин
AdManagerAdView.recordManualImpression()
События приложения
События приложения позволяют создавать объявления, которые могут отправлять сообщения в код приложения. Затем приложение может выполнять действия на основе этих сообщений.
Вы можете прослушивать события приложения Ad Manager, используя AppEventListener
. Эти события могут произойти в любой момент жизненного цикла объявления, даже до вызова onAdLoaded()
.
Ява
public interface AppEventListener {
void onAppEvent(String name, String info);
}
Котлин
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
void onAppEvent(String name, String info)
вызывается, когда в рекламе происходит событие приложения. Этот интерфейс может быть реализован вашей активностью или любым другим объектом:
Ява
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
Котлин
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
а затем передается в AdManagerAdView
:
Ява
AdManagerAdView.setAppEventListener(this);
Котлин
AdManagerAdView.appEventListener = this
Вот пример, показывающий, как изменить цвет фона вашего приложения в зависимости от события приложения с именем цвета:
Ява
@Override
public void onAppEvent(String name, String info) {
if ("color".equals(name)) {
if ("green".equals(info)) {
// Set background color to green.
} else if ("blue".equals(info)) {
// Set background color to blue.
} else {
// Set background color to black.
}
}
}
Котлин
override fun onAppEvent(name: String?, info: String?) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
А вот соответствующий креатив, который отправляет слушателю сообщения о событиях цветового приложения:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.disAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.disAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
Реализацию событий приложения в демонстрационном приложении API см. в примере «События приложения Ad Manager».
Дополнительные ресурсы
Примеры на
- Пример прикрепленных адаптивных баннерных объявлений: Java | Kotlin | JetpackCompose
Следующие шаги
Складные баннеры
Сворачиваемые баннерные объявления — это баннерные объявления, которые изначально представлены в виде большего наложения с кнопкой для сворачивания объявления до меньшего размера. Рассмотрите возможность его использования для дальнейшей оптимизации производительности. Подробнее см. в разделе сворачиваемые баннерные объявления .
Встроенные адаптивные баннеры
Встроенные адаптивные баннеры больше и выше по сравнению с закрепленными адаптивными баннерами. Они имеют переменную высоту и могут быть такими же высокими, как экран устройства. Встроенные адаптивные баннеры рекомендуются вместо закрепленных адаптивных баннеров для приложений, которые размещают баннерную рекламу в прокручиваемом контенте. Подробнее см. в разделе встроенные адаптивные баннеры .