Doğal reklam yükleme

Doğal reklamlar, platforma özgü kullanıcı arayüzü bileşenleri aracılığıyla kullanıcılara sunulan reklam öğeleridir. Bu reklamlar, düzenlerinizi oluştururken kullandığınız görünüm türleriyle gösterilir ve uygulamanızın görsel tasarımına uyacak şekilde biçimlendirilebilir.

Bir doğal reklam yüklendiğinde uygulamanız, öğelerini içeren bir reklam nesnesi alır. Ardından, bu öğeleri görüntülemekten Google Mobile Ads SDK (Legacy) yerine uygulama sorumlu olur.

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

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

Ayrıca bazı müşteri başarı hikayelerine de göz atabilirsiniz: case study 1, case study 2.

Ön koşullar

Devam etmeden önce Google Mobile Ads SDK (Legacy)'ı kurun.

Her zaman test reklamlarıyla test yapın

Uygulamalarınızı oluşturup test ederken canlı ve üretim reklamları yerine test reklamlarını 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

Bu kimlik, 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 bu kimliği 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ı hakkında ayrıntılı bilgi için Test reklamlarını etkinleştirme başlıklı makaleyi inceleyin.

Reklam yükleme

Doğal reklamlar, oluşturma sırasında özelleştirilebilmesi için kendi Builder sınıfına sahip olan AdLoader sınıfıyla yüklenir. Bir uygulama, oluşturulurken AdLoader dinleyicileri ekleyerek hangi tür yerel reklamları almaya hazır olduğunu belirtir. AdLoader daha sonra yalnızca bu türleri ister.

AdLoader oluşturma

Aşağıdaki kodda, yerel reklamları yükleyebilen bir AdLoader oluşturma işlemi gösterilmektedir:

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

AD_UNIT_ID yerine test cihazınızın kimliğini yazın.

forNativeAd() yöntemi, NativeAd biçimi için AdLoader hazırlamaktan 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ı)

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

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

Reklam isteğinde bulun

AdLoader oluşturma işlemini tamamladığınızda reklam istemek için bu AdLoader kullanabilirsiniz. Bu işlem için iki yöntem kullanılabilir: 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

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

Birden fazla 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ı olur. 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. Birden fazla yerel reklam isteği, uyumlulaştırma için yapılandırılmış reklam birimi kimliklerinde çalışmaz.

Geri aramalar

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

loadAds() numarasına yapılan bir aramadan sonra bu tür geri aramalar birden fazla kez yapılır (en az bir kez, istenen reklam sayısından fazla olmayacak şekilde). Birden fazla reklam isteyen uygulamalar, yükleme işleminin tamamlanıp tamamlanmadığını belirlemek için geri çağırma uygulamalarında AdLoader.isLoading() işlevini çağırmalıdır.

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

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

Yayın kaynakları

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

Etkinliğinizin NativeAd yönteminde tüm onDestroy() referansların yok edildiğini doğrulayın.

onNativeAdLoaded geri çağırma işlevinizde, referansı kaldırılacak mevcut yerel reklamları yok ettiğinizden emin olun.

Diğer bir önemli kontrol ise etkinliğin yok edilip edilmediğidir. Etkinlik yok edildiyse döndürülen reklamda destroy() çağrısı yapın ve hemen geri dönün:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

En iyi uygulamalar

Reklam yüklerken aşağıdaki kurallara uyun.

  • Bir listede doğal reklamlar 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üklenene kadar loadAd() veya loadAds() numaralarını AdLoader üzerinden aramayın.
  • Yerel reklam önbelleğe almayı yalnızca gerekli olanlarla sınırlayın. Örneğin, önceden önbelleğe alma işlemi sırasında yalnızca ekranda hemen görünen reklamları önbelleğe alın. Doğal reklamlar büyük bir bellekte kaplanan yere sahiptir ve doğal reklamları kaldırmadan önbelleğe almak aşırı bellek kullanımına neden olur.

  • Artık kullanılmayan doğal reklamları kaldırın.

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

Video reklamların doğal 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. Bu durum uygulamanız için geçerliyse reklam kullanan Etkinlik sınıflarında donanım hızlandırmayı etkinleştirmenizi öneririz.

Donanım hızlandırmayı etkinleştirme

Uygulamanız, donanım hızlandırma özelliği genel olarak etkinleştirildiğinde düzgün çalışmıyorsa bu özelliği tek tek etkinlikler için de kontrol edebilirsiniz. Donanım hızlandırmayı etkinleştirmek veya devre dışı bırakmak için AndroidManifest.xml öğenizdeki <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 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ılmışsa donanım hızlandırma için tek tek reklam görüntülemelerinin etkinleştirilemeyeceğini, bu nedenle Etkinliğin kendisinde donanım hızlandırmanın etkinleştirilmesi gerektiğini unutmayın.

Reklamınızı görüntüleme

Bir reklamı yükledikten sonra yapmanız gereken tek şey, reklamı kullanıcılarınıza göstermektir. Nasıl yapılacağını öğrenmek için Native Advanced kılavuzumuza göz atın.