Bu kılavuzda, Android uygulamasına sabit uyarlanabilir banner reklam yükleme işlemi ele alınmaktadır.
Ön koşullar
- Kurulum Google Mobile Ads SDK (Legacy).
- İsteğe bağlı: Örnek bir banner reklam uygulaması için aşağıdaki örnek uygulamalardan birini seçin:
- Java, Kotlin veya Jetpack Compose sabit uyarlanabilir banner reklam örneği.
- Java veya Kotlin ileri seviye özellikler demosu.
Her zaman test reklamlarıyla test yapın
Uygulamalarınızı oluştururken ve test ederken yayındaki üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bu koşula uymamanız halinde hesabınız askıya alınabilir.
Test reklamlarını yüklemenin en kolay yolu, Android banner'lar için özel test reklam birimi kimliğimizi kullanmaktır:
/21775744923/example/adaptive-banner
Bu kimlik, her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test ve hata ayıklama sırasında bu kimliği kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.
Google Mobile Ads SDK (Legacy) test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test reklamlarını etkinleştirme başlıklı makaleyi inceleyin.
Reklam görünümünü tanımlama
XML Düzeni
Sabitlenmiş uyarlanabilir banner reklamınızın kapsayıcısı olarak hizmet verecek bir görünümü düzen XML dosyanıza ekleyin:
<!-- 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
JetpackCompose Utilities klasörünü ekleyin. Bu klasörde,
AdViewnesnesini ve öğelerini oluşturmaya yardımcı olan araçlar bulunur.AdViewoluşturun:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}
Reklam boyutunu ayarlama
Büyük uyarlanabilir banner'lar, kaydırılmayan düzenler için tasarlanmış daha büyük bir biçim sunar. Bu banner'lar, standart sabit uyarlanabilir banner'lara kıyasla daha yüksek bir maksimum yüksekliğe (ekran yüksekliğinin% 20'si ve 50-150 dp arasında) izin verir. Bu genişletilmiş alan, video içerikler için optimize edilmiştir.
AdSize öğesini, belirtilen genişliğe sahip sabitlenmiş bir uyarlanabilir banner türü olarak ayarlayın:
Java
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
Kotlin
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
Jetpack Compose
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
Cihaz ekranı boyutundan küçük veya ona eşit bir reklam boyutu ayarlayın.
Maksimum ekran boyutunu belirlemek için Resources.getDisplayMetrics yöntemini kullanın. AdSize nesne boyutları, yoğunluktan bağımsız pikseller (dp) kullanır. Karşılaştırma yaparken ekran boyutunu pikselden dp'ye dönüştürün.
Boyut kısıtlamaları hakkında ayrıntılı bilgi için Ad Manager'da doldurulmayan gösterimlerle ilgili sorunları giderme başlıklı makaleyi inceleyin.
Düzene AdManagerAdView ekleme
Uygulamanızın düzenine eklemek için reklam boyutunu kullanarak bir AdManagerAdView oluşturun:
Java
// 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);
Kotlin
// Create a new ad view.
val adView = AdManagerAdView(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 Compose
val adView = remember { AdManagerAdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_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()) { AdManagerBannerAd(adView, modifier) }
}
Reklam yükleme
Aşağıdaki örnekte, 360 genişliğinde bir sabit uyarlanabilir banner reklam bir AdManagerAdView nesnesine yüklenmektedir:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)
Reklamı yenileme
Reklam biriminizi yenilenecek şekilde yapılandırdıysanız reklam yüklenemediğinde başka bir reklam istemeniz gerekmez. Google Mobile Ads SDK (Legacy), Ad Manager kullanıcı arayüzünde belirttiğiniz yenileme hızına uyar. Yenilemeyi etkinleştirmediyseniz yeni bir istek gönderin. Yenileme hızı ayarlama gibi reklam birimi yenileme hakkında daha fazla bilgi için Mobil uygulamalarda reklamların yenileme hızı başlıklı makaleyi inceleyin.
Reklam kaynağını yayınlama
Banner reklamı kullanmayı bitirdiğinizde banner reklamın kaynaklarını serbest bırakabilirsiniz.
Reklamın kaynağını serbest bırakmak için reklamı görünüm hiyerarşisinden kaldırır ve tüm referanslarını bırakırsınız:
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;
}
Kotlin
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
}
Jetpack Compose
DisposableEffect(Unit) {
// Destroy the AdView to prevent memory leaks when the screen is disposed.
onDispose { adView.destroy() }
}
Reklam etkinlikleri
Reklamın yaşam döngüsündeki yükleme, reklam gösterimi ve tıklama, reklam açma ve kapatma etkinlikleri gibi çeşitli etkinlikleri dinleyebilirsiniz. Banner yüklenmeden önce geri aramayı ayarlamanız önerilir.
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.
}
});
}
Kotlin
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 sınıfındaki geçersiz kılınabilir yöntemlerin her biri, bir reklamın yaşam döngüsündeki bir etkinliğe karşılık gelir.
| Geçersiz kılınabilir yöntemler | |
|---|---|
onAdClicked() |
onAdClicked()
yöntemi, bir reklam için tıklama kaydedildiğinde çağrılır.
|
onAdClosed() |
onAdClosed()
yöntemi, kullanıcı bir reklamın hedef URL'sini görüntüledikten sonra uygulamaya döndüğünde çağrılır. Uygulamanız, askıya alınmış etkinlikleri devam ettirmek veya etkileşime hazır hale gelmek için gereken diğer işlemleri yapmak üzere bu yöntemi kullanabilir.
|
onAdFailedToLoad() |
onAdFailedToLoad() yöntemi, parametre içeren tek yöntemdir. LoadAdError türündeki hata parametresi, hangi hatanın oluştuğunu açıklar. Daha fazla bilgi için Reklam Yükleme Hatalarını Ayıklama
belgelerini inceleyin.
|
onAdImpression() |
onAdImpression()
yöntemi, bir reklam için gösterim kaydedildiğinde çağrılır.
|
onAdLoaded() |
onAdLoaded() yöntemi, reklamın yüklenmesi tamamlandığında yürütülür. Örneğin, bir reklamın yükleneceğinden emin olana kadar etkinliğinize veya parçanıza AdManagerAdView eklemeyi geciktirmek istiyorsanız bunu buradan yapabilirsiniz.
|
onAdOpened() |
Bir reklam, ekranı kaplayan bir yer paylaşımı açtığında onAdOpened() yöntemi çağrılır.
|
Video reklamlar için donanım hızlandırma
Video reklamların banner reklam görünümlerinizde başarıyla gösterilmesi için donanım hızlandırma etkinleştirilmelidir.
Donanım hızlandırma varsayılan olarak etkindir ancak bazı uygulamalar bunu devre dışı bırakabilir. Uygulamanız bu kapsama giriyorsa reklam kullanan Activity sınıfları için donanım hızlandırmayı etkinleştirmenizi öneririz.
Donanım hızlandırmayı etkinleştirme
Uygulamanız, donanım hızlandırma genel olarak etkinleştirildiğinde düzgün çalışmıyorsa bu özelliği her bir etkinlik için ayrı ayrı kontrol edebilirsiniz. Donanım hızlandırmayı etkinleştirmek veya devre dışı bırakmak için AndroidManifest.xml dosyanızdaki <application> ve <activity> öğelerinin android:hardwareAccelerated özelliğini kullanabilirsiniz. Aşağıdaki örnek, uygulamanın tamamında donanım hızlandırmayı etkinleştirir ancak bir etkinlik için devre dışı bırakır:
<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>
Donanım hızlandırmayı kontrol etme seçenekleri hakkında daha fazla bilgi için Donanım hızlandırma kılavuzuna bakın. Etkinlik devre dışı bırakılırsa tek reklam görünümleri için donanım hızlandırmanın etkinleştirilemeyeceğini unutmayın. Bu nedenle, etkinliğin kendisinde donanım hızlandırma etkinleştirilmelidir.
Manuel gösterim sayımı
Manuel gösterim sayma yalnızca Ad Manager'da doğrudan trafiğe eklenen reklam öğeleri içeren doğrudan satılan ve kurum kampanyaları ile uyumludur. Dolgu veya üçüncü taraf ağ reklamları için kullanılmamalıdır. Daha fazla bilgi için Gösterimleri ve tıklamaları sayma başlıklı makaleyi inceleyin.
Gösterimin ne zaman kaydedilmesi gerektiğiyle ilgili özel koşullarınız varsa gösterim ping'lerini Ad Manager'a manuel olarak gönderebilirsiniz:
Java
if (adManagerAdView != null) {
adManagerAdView.setManualImpressionsEnabled(true);
}
Kotlin
adManagerAdView?.setManualImpressionsEnabled(true)
Bir reklamın başarıyla döndürüldüğünü ve ekranda olduğunu belirlediğinizde manuel olarak bir gösterim kaydedebilirsiniz:
Java
if (adManagerAdView != null) {
adManagerAdView.recordManualImpression();
}
Kotlin
adManagerAdView?.recordManualImpression()
Uygulama etkinlikleri
Uygulama etkinlikleri, uygulama kodlarına mesaj gönderebilen reklamlar oluşturmanıza olanak tanır. Uygulama daha sonra bu iletilere göre harekete geçebilir.
AppEventListener kullanarak Ad Manager'a özel uygulama etkinliklerini dinleyebilirsiniz.
Bu etkinlikler, onAdLoaded() çağrılmadan önce bile reklamın yaşam döngüsü boyunca herhangi bir zamanda gerçekleşebilir.
AdManagerAdView cihazınızda AppEventListener ayarını yapın:
Java
if (adManagerAdView != null) {
adManagerAdView.setAppEventListener(this);
}
Kotlin
adManagerAdView?.appEventListener = this
Aşağıda, uygulamanızın arka plan rengini, adı "color" olan bir uygulama etkinliğine göre nasıl değiştireceğinizi gösteren bir örnek verilmiştir:
Java
@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
if (name.equals("color")) {
switch (info) {
case "green":
// Set background color to green.
break;
case "blue":
// Set background color to blue.
break;
default:
// Set background color to black.
break;
}
}
}
Kotlin
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.
}
}
}
}
Ayrıca, dinleyiciye renk uygulama etkinliği mesajları gönderen ilgili reklam öğesini aşağıda bulabilirsiniz:
<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.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("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 Demo uygulamasında uygulama etkinliklerinin uygulanması için Ad Manager Uygulama Etkinlikleri örneğine bakın.
Sonraki adımlar
Daraltılabilir banner'lar
Daraltılabilir banner reklamlar, başlangıçta daha büyük bir yer paylaşımı olarak sunulan ve reklamı daha küçük bir boyuta daraltmak için bir düğme içeren banner reklamlardır. Performansınızı daha da optimize etmek için bu stratejiyi kullanabilirsiniz. Daha fazla bilgi için daraltılabilir banner reklamlar bölümüne bakın.
Satır içi uyarlanabilir banner'lar
Satır içi uyarlanabilir banner'lar, sabit uyarlanabilir banner'lara kıyasla daha büyük ve daha uzun banner'lardır. Yükseklikleri değişkendir ve cihaz ekranı kadar uzun olabilirler. Banner reklamları kaydırılabilir içeriğe yerleştiren uygulamalar için sabit uyarlanabilir banner reklamlar yerine satır içi uyarlanabilir banner'lar önerilir. Daha fazla bilgi için satır içi uyarlanabilir banner'lar bölümünü inceleyin.