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.

Bazı müşterilerin 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 yayındaki ü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ı konusuna bakın.

Reklamları yükle

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. Uygulama, oluştururken AdLoader öğesine işleyiciler ekleyerek hangi doğal reklam türlerini almaya hazır olduğunu belirtir. Daha sonra AdLoader, yalnızca bu türleri ister.

AdLoader oluşturma

Aşağıdaki kod, yerel reklamlar yükleyebilen bir AdLoader özelliğinin nasıl oluşturulacağını göstermektedir:

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 AdRequest sınıfının yöntemlerini kullanarak hedefleme bilgileri ekleyebilirsiniz.

Birden çok reklam yükleyin (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ı en fazla beşle sınırlıdır ve SDK'nın istenen reklamı 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 olacağı 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 çağırma işlevleri

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

Reklamları yüklerken bu kurallara uyun.

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

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

  • İlk isteğin yüklenmesi bitene kadar AdLoader üzerinde loadAd() veya loadAds() yöntemini çağırmayın.

  • Yerel reklam önbelleğe alma işlemini yalnızca gerekli olanla sınırlayın. Örneğin, önbelleğe alma 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ı yok etmeden ö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ırma 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 üzere AndroidManifest.xml sayfanızdaki <application> ve <activity> öğeleri için android:hardwareAccelerated özelliğini kullanın. Aşağıdaki örnek, uygulamanın tamamında 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ırmayı kontrol etme seçenekleri hakkında daha fazla bilgi için HW 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 geriye kalan tek şey onu kullanıcılarınıza göstermektir. Nasıl yapıldığını görmek için Yerel Gelişmiş kılavuzumuza gidin.