Banner reklamlar

Banner reklamlar, uygulama düzeninde cihaz ekranının üst veya alt kısmında bir yer kaplar. Bu reklamlar, kullanıcılar uygulamayla etkileşimde bulunurken ekranda kalır ve belirli bir süre sonra otomatik olarak yenilenebilir. Mobil reklamcılıkta yeniyseniz, bu, başlamak için harika bir yerdir.

Bu kılavuzda,Ad Manager kaynağından banner reklamların Android uygulamasına nasıl entegre edileceği gösterilmektedir. Kod snippet'leri ve talimatların yanı sıra banner'ların doğru şekilde boyutlandırılması ve ek kaynakların bağlantıları da bulunur.

Ön koşullar

Düzene AdManagerAdView ekle

Bir banner'ı görüntülemenin ilk adımı, AdManagerAdView öğesini göstermek istediğiniz Activity veya Fragment düzenine yerleştirmektir. Bunu yapmanın en kolay yolu, ilgili XML düzen dosyasına bir şablon eklemektir. Bir etkinliğin AdManagerAdView alanını gösteren bir örneği aşağıda bulabilirsiniz:

# main_activity.xml
<com.google.android.gms.ads.admanager.AdManagerAdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adManagerAdView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="/6499/example/banner">
</com.google.android.gms.ads.admanager.AdManagerAdView>

Aşağıdaki gerekli özellikleri göz önünde bulundurun:

  • ads:adSize: Bu seçeneği, kullanmak istediğiniz reklam boyutuna ayarlayın. Sabit boyutla tanımlanan standart boyutu kullanmak istemiyorsanız bunun yerine özel bir boyut ayarlayabilirsiniz. Ayrıntılar için banner boyutu bölümüne bakın.

  • ads:adUnitId: Bu değeri, uygulamanızda reklamların görüntüleneceği reklam birimine atanan benzersiz tanımlayıcı olarak ayarlayın. Farklı etkinliklerde banner reklamlar gösteriyorsanız her biri için bir reklam birimi gerekir.

Alternatif olarak AdManagerAdView öğesini programatik olarak da oluşturabilirsiniz:

Java

AdManagerAdView adView = new AdManagerAdView(this);

adView.setAdSizes(AdSize.BANNER);

adView.setAdUnitId("/6499/example/banner");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdManagerAdView(this)

adView.adSizes = AdSize.BANNER

adView.adUnitId = "/6499/example/banner"
// TODO: Add adView to your view hierarchy.

Her zaman test reklamlarıyla test etme

Uygulamalarınızı oluştururken ve test ederken canlı, üretim reklamları yerine test reklamlarını kullandığınızdan emin olun. Bunu yapmazsanız 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:

/6499/example/banner

Her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır ve kodlama, test ve hata ayıklama sırasında kendi uygulamalarınızda kullanabilirsiniz. Uygulamanızı yayınlamadan önce bu kimliği kendi reklam birimi kimliğinizle değiştirdiğinizden emin olun.

Mobile Ads SDK'sının test reklamlarının nasıl çalıştığı hakkında daha fazla bilgi için Test Reklamları konusuna bakın.

Reklam yükle

AdManagerAdView oluşturulduktan sonraki adım, bir reklam yüklemektir. Bu işlem AdManagerAdView sınıfındaki loadAd() yöntemi ile yapılır. Tek bir reklam isteği hakkında hedefleme bilgileri gibi çalışma zamanı bilgilerini barındıran bir AdManagerAdRequest parametresi gerekir.

Aşağıda, Activity için onCreate() yönteminde bir reklamın nasıl yükleneceğini gösteren bir örnek verilmiştir:

MainActivity (alıntı)

Java

package ...

import ...
import com.google.android.gms.ads.admanager.AdManagerAdRequest;
import com.google.android.gms.ads.admanager.AdManagerAdView;

public class MainActivity extends AppCompatActivity {
    private AdManagerAdView mAdManagerAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAdManagerAdView = findViewById(R.id.adManagerAdView);
        AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
        mAdManagerAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.admanager.AdManagerAdRequest
import com.google.android.gms.ads.admanager.AdManagerAdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdManagerAdView : AdManagerAdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mAdManagerAdView = findViewById(R.id.adManagerAdView)
        val adRequest = AdManagerAdRequest.Builder().build()
        mAdManagerAdView.loadAd(adRequest)
    }
}

Reklamınız yüklenemezse reklam biriminizi yenilenecek şekilde yapılandırdığınız sürece açıkça başka bir reklam istemenize gerek yoktur. Google Mobile Ads SDK'sıAd Manager web arayüzünde belirttiğiniz yenileme hızına uyar. Yenilemeyi etkinleştirmediyseniz yeni bir istek göndermeniz gerekir.

İşte bu kadar. Uygulamanız artık banner reklam göstermeye hazır.

Reklam etkinlikleri

Reklamınızın davranışını daha da özelleştirmek için reklamın yaşam döngüsünde yükleme, açma, kapatma gibi birçok olayı ele alabilirsiniz. Bu etkinlikleri AdListener sınıfı aracılığıyla dinleyebilirsiniz.

AdManagerAdView ile AdListener kullanmak için setAdListener() yöntemini çağırın:

Java

mAdManagerAdView.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.
    }
});

Kotlin

mAdManagerAdView.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 içindeki 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() Bir reklam için tıklama kaydedildiğinde onAdClicked() yöntemi çağrılır.
onAdClosed() Bir kullanıcı bir reklamın hedef URL'sini görüntüledikten sonra uygulamaya döndüğünde onAdClosed() yöntemi çağrılır. Uygulamanız, askıya alınmış etkinlikleri devam ettirmek veya kendisini etkileşime hazır hale getirmek için gereken diğer işleri yapmak için bu hesabı 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ında Hata Ayıklama belgelerini inceleyin.
onAdImpression() Bir reklam için gösterim kaydedildiğinde onAdImpression() yöntemi çağrılır.
onAdLoaded() onAdLoaded() yöntemi, bir reklamın yüklenmesi tamamlandığında yürütülür. Örneğin, bir reklamın yükleneceğinden emin olana kadar AdManagerAdView öğesini etkinliğinize veya parçanıza eklemeyi geciktirmek isterseniz bunu burada yapabilirsiniz.
onAdOpened() Bir reklam, ekranı kaplayan bir yer paylaşımı açtığında onAdOpened() yöntemi çağrılır.

Reklamınızı yerleştirdiğiniz kapsayıcının boyutu en az banner kadar olmalıdır. Kapsayıcınızda dolgu varsa bu, kapsayıcınızın boyutunu etkili şekilde azaltır. Kapsayıcı banner reklama sığmazsa banner görünmez ve günlüklerde şu uyarıyı alırsınız:

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

Aşağıdaki tabloda standart banner boyutları listelenmiştir.

dp cinsinden boyut (GxY) Açıklama Kullanılabilirlik Reklam Boyutu sabiti
320x50 Banner Telefonlar ve tabletler BANNER
320x100 Büyük banner Telefonlar ve tabletler LARGE_BANNER
300x250 IAB orta boy dikdörtgen Telefonlar ve tabletler MEDIUM_RECTANGLE
468x60 IAB tam boyutlu banner Tabletler FULL_BANNER
728x90 IAB skor tablosu Tabletler LEADERBOARD
Sağlanan genişlik x Uyarlanabilir yükseklik Uyarlanabilir banner Telefonlar ve tabletler Yok
Ekran genişliği x 32|50|90 Akıllı banner Telefonlar ve tabletler SMART_BANNER

Özel banner boyutu tanımlamak için istediğiniz AdSize değerini gösterildiği gibi ayarlayın:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

Özel reklam boyutu

Standart reklam birimlerine ek olarak, Ad Manager bir uygulamada her boyutlu reklam birimini yayınlamanıza olanak tanır. Bir reklam isteği için tanımlanan reklam boyutu (genişlik, yükseklik), uygulamada gösterilen reklam görünümünün boyutlarıyla (aşağıdaki örnekte AdManagerAdView) eşleşmelidir:

Java

// Define custom AdSize of 250x250 for AdManagerAdView

AdSize customAdSize = new AdSize(250, 250);
AdManagerAdView adView = new AdManagerAdView(this);
adView.setAdSizes(customAdSize);

Kotlin

// Define custom AdSize of 250x250 for AdManagerAdView

val customAdSize = AdSize(250, 250)
val adView = AdManagerAdView(this)
adView.setAdSizes(customAdSize)

Android API Demo uygulamasında özel reklam boyutunun uygulanması için Ad Manager Birden Çok Reklam Boyutu örneğine bakın.

Birden çok reklam boyutu

Ad Manager, AdManagerAdView içinde yayınlanmaya uygun olabilecek birden fazla reklam boyutu belirtmenize olanak tanır. Bu özelliği SDK'da uygulamadan önce farklı boyutlu reklam öğeleriyle ilişkilendirilmiş aynı reklam birimini hedefleyen bir satır öğesi oluşturun.

Uygulamanızda setAdSizes içine birden fazla AdSize parametresi iletmeniz yeterlidir:

Java

AdManagerAdView adView = new AdManagerAdView(this);
adView.setAdSizes(AdSize.BANNER, new AdSize(120, 20), new AdSize(250, 250));

Kotlin

val adView = AdManagerAdView(this)
adView.setAdSizes(AdSize.BANNER, AdSize(120, 20), AdSize(250, 250))

AdManagerAdView öğesinin boyutu yenileme zamanında değişirse düzeniniz otomatik olarak yeni boyuta uyarlanabilir. AdManagerAdView, sonraki reklam döndürülene kadar varsayılan olarak ilk parametrede iletilen boyutu kullanır.

XML düzen dosyanızda ads:adSizes özelliğini kullanarak birden çok reklam boyutu da belirtebilirsiniz:

<com.google.android.gms.ads.admanager.AdManagerAdView
   android:id="@+id/multiple_ad_sizes_view"
   android:layout_width="wrap_parent"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:layout_centerHorizontal="true"
   ads:adSizes="BANNER,120x20,250x250"
   ads:adUnitId="AD_UNIT_ID" />

Android API Demo uygulamasında birden fazla reklam boyutunun uygulanması için Ad Manager Birden Çok Reklam Boyutu örneğine bakın.

Manuel gösterim sayımı

Manuel gösterim sayma yalnızca reklam öğelerinin doğrudan Ad Manager'da trafiğe eklendiği doğrudan satılan ve kurum kampanyalarıyla uyumludur. Dolgu veya üçüncü taraf ağ reklamları için kullanılmamalıdır. Daha fazla bilgi için Gösterimleri ve tıklamaları sayma bölümüne bakın.

Gösterimin ne zaman kaydedilmesi gerektiğine dair özel koşullarınız varsa gösterim ping'lerini Ad Manager'a manuel olarak gönderebilirsiniz. Bunu yapmak amacıyla, bir reklamı yüklemeden önce manuel gösterimler için bir AdManagerAdRequest özelliğini etkinleştirin:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Bir reklamın başarıyla döndürüldüğünü ve ekranda olduğunu belirlediğinizde manuel olarak gösterim kaydedebilirsiniz:

Java

mAdManagerAdView.recordManualImpression();

Kotlin

mAdManagerAdView.recordManualImpression()

Uygulama etkinlikleri

Uygulama etkinlikleri, kullanıcıların uygulama kodlarına mesaj gönderebilen reklamlar oluşturmanıza olanak tanır. Daha sonra uygulama, bu mesajlara göre işlem yapabilir.

AppEventListener kullanarak Ad Manager'daki belirli uygulama etkinliklerini dinleyebilirsiniz. Bu etkinlikler, reklamın yaşam döngüsü boyunca herhangi bir zamanda, hatta onAdLoaded() çağrılmadan önce bile gerçekleşebilir.

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

Reklamda bir uygulama etkinliği gerçekleştiğinde void onAppEvent(String name, String info) çağrılır. Bu arayüz, etkinliğiniz veya başka bir nesne tarafından uygulanabilir:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

ve daha sonra AdManagerAdView öğesine iletildi:

Java

mAdManagerAdView.setAppEventListener(this);

Kotlin

mAdManagerAdView.appEventListener = this

Renk adı olan bir uygulama etkinliğine bağlı olarak uygulamanızın arka plan renginin nasıl değiştirileceğini gösteren bir örneği aşağıda bulabilirsiniz:

Java

@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.
    }
  }
}

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.
            }
        }
    }
}

Aşağıda, İşleyici'ye renk uygulaması etkinlik mesajları gönderen ilgili reklam öğesi gösterilmektedir:

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

Android API Demo uygulamasında uygulama etkinliklerinin uygulanması için Ad Manager Uygulama Etkinlikleri örneğine bakın.

Video reklamlar için donanım hızlandırma

Video reklamların banner reklam görüntülemelerinizde başarılı bir şekilde gösterilmesi için donanım hızlandırma'nın etkinleştirilmesi gerekir.

Donanım hızlandırma varsayılan olarak etkindir ancak bazı uygulamalar bunu devre dışı bırakmayı seçebilir. Bu durum uygulamanız için geçerliyse 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 genel olarak açık donanım hızlandırmada düzgün davranmıyorsa bunu her etkinlik için de kontrol edebilirsiniz. Donanım hızlandırmayı etkinleştirmek veya devre dışı bırakmak için AndroidManifest.xml içindeki <application> ve <activity> öğeleri için android:hardwareAccelerated özelliğini kullanabilirsiniz. Aşağıdaki örnek, uygulamanın tamamı için donanım hızlandırmayı etkinleştirir ancak tek 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ırmasını 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 donanım hızlandırma için tek reklam görüntülemelerinin etkinleştirilemeyeceğini unutmayın. Bu nedenle etkinliğin kendisinde donanım hızlandırma etkin olmalıdır.

Ek kaynaklar

GitHub'daki örnekler

  • Banner reklamların minimum düzeyde uygulanması örneği: Java | Kotlin

  • Gelişmiş özellikler demosu: Java | Kotlin

Mobile Ads Garage eğitim videoları

Sonraki adımlar

Şu konuları keşfedin: