Doğal reklamlar

Doğal reklamlar, platforma özgü kullanıcı arayüzü bileşenleri aracılığıyla kullanıcılara sunulan reklam öğeleridir. Bu sayfalar, zaten düzenlerinizi oluşturduğunuz görünüm türleri kullanılarak gösterilir ve uygulamanızın görsel tasarımıyla eşleşecek şekilde biçimlendirilebilir.

Bir doğal reklam yüklendiğinde uygulamanız, öğelerini içeren bir reklam nesnesi alır ve bu öğeleri göstermekten Google Mobile Ads SDK'sı yerine uygulama sorumlu olur.

Genel olarak, doğal reklamları başarılı bir şekilde uygulamanın iki bölümü vardır: SDK'yı kullanarak bir reklamı yükleme ve ardından reklam içeriğini uygulamanızda görüntüleme.

Bu sayfada, yerel reklamları yüklemek için SDK'nın nasıl kullanılacağı gösterilmektedir. İpucu: Yerel Reklamlar Başucu Kitabı'mızdan yerel reklamlar hakkında daha fazla bilgi edinin.

Ayrıca bazı müşteri başarı öykülerine de göz atabilirsiniz: örnek olay 1, örnek olay 2.

Ön koşullar

Her zaman test reklamlarıyla test yapın

Uygulamalarınızı oluşturup test ederken canlı üretim reklamları yerine test reklamları kullandığınızdan emin olun.

Test reklamlarını yüklemenin en kolay yolu, Android'deki doğal reklamlar için özel test reklam birimi kimliğimizi kullanmaktır:

ca-app-pub-3940256099942544/2247696110

Her istek için test reklamları döndürecek şekilde özel olarak yapılandırılmıştır. Kodlama, test etme 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.

Google Mobile Ads SDK'sının test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test reklamları başlıklı makaleyi inceleyin.

Reklam yükleme

Yerel reklamlar, AdLoader sınıfıyla yüklenir. Bu sınıfın, oluşturulma sırasında özelleştirilmesini sağlayan kendi Builder sınıfı vardır. Bir uygulama, AdLoader sınıfını oluştururken dinleyiciler ekleyerek hangi yerel reklam türlerini almaya hazır olduğunu belirtir. AdLoader daha sonra yalnızca bu türleri ister.

AdLoader oluşturma

Aşağıdaki kodda, doğal reklamları yükleyebilecek bir AdLoader öğesinin nasıl oluşturulacağı gösterilmektedir:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

AdLoader öğesinin NativeAd biçimine hazırlanmasından forNativeAd() yöntemi sorumludur. Bir reklam başarıyla yüklendiğinde dinleyici nesnesinin onNativeAdLoaded() yöntemi çağrılır.

AdLoader ile AdListener oluşturma (isteğe bağlı)

withAdListener işlevi, AdLoader'ü oluştururken yükleyici için bir AdListener ayarlar. Yöntem, tek parametresi olarak bir AdListener alır. Bu parametre, reklam yaşam döngüsü etkinlikleri gerçekleştiğinde AdLoader'dan geri çağırma alır:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Reklam isteğinde bulun

AdLoader oluşturma işlemini tamamladıktan sonra, reklam isteğinde bulunmak için bu öğeyi kullanabilirsiniz. Bunun için iki yöntem vardır: loadAd() ve loadAds().

loadAd()

Bu yöntem, tek bir reklam için istek gönderir.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

Bu yöntem, birden fazla reklam (en fazla beş) için istek gönderir:

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Her iki yöntem de ilk parametresi olarak bir AdRequest nesnesi alır. Bu, banner'lar ve geçiş reklamları tarafından kullanılan AdRequest sınıfıyla aynıdır. Diğer reklam biçimlerinde yaptığınız gibi hedefleme bilgileri eklemek için AdRequest sınıfının yöntemlerini kullanabilirsiniz.

Birden çok reklam yükleme (isteğe bağlı)

loadAds() yöntemi ek bir parametre alır: SDK'nın istek için yüklemeye çalışması gereken reklam sayısı. Bu sayı beş ile sınırlıdır ve SDK'nın istenen reklam sayısını tam olarak döndüreceği garanti edilmez.

Döndürülen Google reklamlarının tümü birbirinden farklı olacaktır ancak ayrılmış envanterden veya üçüncü taraf alıcılardan gelen reklamların benzersiz olması garanti edilmez.

Uyumlulaştırma kullanıyorsanız loadAds() yöntemini kullanmayın. Çünkü birden fazla yerel reklam isteği, uyumlulaştırma için yapılandırılmış reklam birimi kimliklerinde şu anda kullanılamaz.

Geri aramalar

loadAd() çağrısı yapıldıktan sonra, yerel reklam nesnesini yayınlamak veya bir hatayı bildirmek için önceden tanımlanmış dinleyici yöntemlerine tek bir geri çağırma yapılır.

loadAds() adresine yapılan bir aramadan sonra bu türden birden fazla geri arama yapılır (en az bir, en fazla istenen reklam sayısı kadar). Birden fazla reklam isteyen uygulamalar, yükleme işleminin tamamlanıp tamamlanmadığını belirlemek için geri çağırma uygulamalarında AdLoader.isLoading() çağrısı yapmalıdır.

onNativeAdLoaded() geri çağırma işlevinde isLoading() değerinin nasıl kontrol edileceğini gösteren bir örnek aşağıda verilmiştir:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

Kaynakları serbest bırakma

Yüklenen yerel reklamlarda destroy() yöntemini kullandığınızdan emin olun. Bu işlem, kullanılmayan kaynakları serbest bırakır ve bellek sızıntılarını önler.

Etkinliğinizin onDestroy() yönteminde tüm NativeAd referanslarının kaldırıldığından emin olun.

onNativeAdLoaded geri çağırma işlevinizde, başvurusu kaldırılacak mevcut tüm doğal reklamları yok ettiğinizden emin olun.

Bir diğer önemli kontrol, etkinliğin yok edilip edilmediğidir. Etkinlik yok edilmişse döndürülen reklamda destroy() işlevini çağırın ve hemen döndürün:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

En iyi uygulamalar

Reklam yüklerken bu kurallara uyun.

  • Bir listede doğal reklam kullanan uygulamalar, reklam listesini önceden önbelleğe almalıdır.

  • Reklamları önceden önbelleğe alırken önbelleğinizi temizleyin ve bir saat sonra yeniden yükleyin.

  • İlk istek yüklenmeyi tamamlayana kadar AdLoader cihazında loadAd() veya loadAds() aramayın.

  • Yerel reklam önbelleğe alma işlemini yalnızca gerekli olanla sınırlayın. Örneğin, önbelleğe alma işlemi sırasında yalnızca ekranda hemen görünen reklamları önbelleğe alın. Yerel reklamlar büyük bir bellek alanı kaplar ve yerel reklamları silmeden önbelleğe almak aşırı bellek kullanımına neden olur.

  • Artık kullanılmayan doğal reklamları yok edin.

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

Video reklamların yerel reklam görüntülemelerinizde başarılı bir şekilde gösterilmesi için donanım hızlandırması etkinleştirilmelidir.

Donanım hızlandırması varsayılan olarak etkindir ancak bazı uygulamalar bunu devre dışı bırakabilir. 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, donanım hızlandırması genel olarak açıkken düzgün çalışmıyorsa bu ayarı ayrı etkinlikler için de kontrol edebilirsiniz. Donanım hızlandırmayı etkinleştirmek veya devre dışı bırakmak için AndroidManifest.xml'inizdeki <application> ve <activity> öğeleri için android:hardwareAccelerated özelliğini kullanın. Aşağıdaki örnekte, uygulamanın tamamı için donanım hızlandırması etkinleştirilir ancak bir etkinlik için devre dışı bırakılı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ışıysa tek tek reklam görüntülemelerinin donanım hızlandırma için etkinleştirilemeyeceğini unutmayın. Bu nedenle, etkinliğin kendisinde donanım hızlandırmanın etkinleştirilmesi gerekir.

Reklamınızı gösterme

Bir reklamı yükledikten sonra tek yapmanız gereken, reklamı kullanıcılarınıza göstermektir. Nasıl yapılacağını öğrenmek için yerel reklamlar ile ilgili ileri seviye kılavuzumuzu inceleyin.