Banner reklamları oluşturma

Banner reklamlar, uygulama düzeninin bir kısmını kaplayan dikdörtgen reklamlardır. Sabit uyarlanabilir banner'lar, kullanıcılar uygulamayla etkileşimde bulunurken ekranın üst veya alt kısmına sabitlenmiş olarak ekranda kalan sabit en boy oranlı reklamlardır.

Bu kılavuzda, Android uygulamasına sabit uyarlanabilir banner reklam yükleme işlemi ele alınmaktadır.

Ön koşullar

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

GMA Next-Gen SDK test reklamlarının işleyiş şekli hakkında daha fazla bilgi için Test reklamlarını etkinleştirme başlıklı makaleyi inceleyin.

AdView nesnesi oluşturma

Banner'ları görüntülemek için aşağıdakileri yapın:

Kotlin

  1. AdView nesnesi oluşturun.
  2. AdView nesnesini uygulamanızın düzenine ekleyin.

Aşağıdaki örnekte, AdView nesnesi oluşturulup bir uygulama düzenine eklenmektedir:

private fun createAdView(adViewContainer: FrameLayout, activity: Activity) {
  val adView = AdView(activity)
  adViewContainer.addView(adView)
}

Java

  1. AdView nesnesi oluşturun.
  2. AdView nesnesini uygulamanızın düzenine ekleyin.

Aşağıdaki örnekte, AdView nesnesi oluşturulup bir uygulama düzenine eklenmektedir:

private void createAdView(FrameLayout adViewContainer, Activity activity) {
  AdView adView = new AdView(activity);
  adViewContainer.addView(adView);
}

XML Düzeni

Düzen XML dosyanıza bir AdView öğesi ekleyin:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <com.google.android.libraries.ads.mobile.sdk.banner.AdView
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Jetpack Compose

  1. remember bloğunun içinde bir AdView nesnesi oluşturun.
  2. AdView nesnesini görüntülemek için Compose kullanıcı arayüzüne bir AndroidView öğesi ekleyin:
val context = LocalContext.current
val adView = remember { AdView(context) }

// The AdView is placed at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) {
    // Display the ad within an AndroidView.
    AndroidView(modifier = modifier.wrapContentSize(), factory = { adView })
  }
}

Reklam yükleme

Aşağıdaki örnekte, 360 genişliğinde sabit uyarlanabilir bir banner reklam bir AdView nesnesine yükleniyor:

Kotlin

private fun loadBannerAd(adView: AdView, activity: Activity) {
  // Get a BannerAdRequest for a 360 wide large anchored adaptive banner ad.
  val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360)
  val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()

  adView.loadAd(
    adRequest,
    object : AdLoadCallback<BannerAd> {
      override fun onAdLoaded(ad: BannerAd) {
        Log.d(TAG, "Banner ad loaded.")
      }

      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, "Banner ad failed to load: $adError")
      }
    },
  )
}

Java

private void loadBannerAd(AdView adView, Activity activity) {
  // Get a BannerAdRequest for a 360 wide large anchored adaptive banner ad.
  AdSize adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(activity, 360);
  BannerAdRequest adRequest = new BannerAdRequest.Builder(AD_UNIT_ID, adSize).build();

  adView.loadAd(
      adRequest,
      new AdLoadCallback<BannerAd>() {
        @Override
        public void onAdLoaded(@NonNull BannerAd bannerAd) {
          Log.d(TAG, "Banner ad loaded.");
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          Log.d(TAG, "Banner ad failed to load: " + adError);
        }
      });
}

Jetpack Compose

// Request a large anchored adaptive banner with a width of 360.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(context, 360)

// Load the ad when the screen is active.
val isPreviewMode = LocalInspectionMode.current
LaunchedEffect(adSize) {
  if (!isPreviewMode) {
    val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()
    adView.loadAd(
      adRequest,
      object : AdLoadCallback<BannerAd> {
        override fun onAdLoaded(ad: BannerAd) {
          Log.d(Constant.TAG, "Banner ad loaded.")
        }

        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.w(Constant.TAG, "Banner ad failed to load: $adError")
        }
      },
    )
  }
}

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ıyla ilgili ayrıntılar için Ad Manager'da doldurulmayan gösterimlerle ilgili sorunları giderme başlıklı makaleyi inceleyin.

Reklamı yenileme

Reklam biriminizi yenilenecek şekilde yapılandırdıysanız reklam yüklenemediğinde başka bir reklam istemeniz gerekmez. GMA Next-Gen SDK, 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ı serbest bırakma

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ı silersiniz:

Kotlin

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

Java

private void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    if (adView.getParent() instanceof ViewGroup) {
      ((ViewGroup) adView.getParent()).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Jetpack Compose

// Destroy the ad when the screen is disposed.
DisposableEffect(Unit) { onDispose { adView.destroy() } }

Reklam etkinlikleri

Reklamın yaşam döngüsündeki bir dizi etkinliği (reklam gösterimi ve tıklaması, reklamın açılması ve kapatılması dahil) dinleyebilirsiniz. Geri çağırmanın, banner gösterilmeden önce ayarlanması önerilir.

Kotlin

override fun onAdLoaded(ad: BannerAd) {
  ad.adEventCallback =
    object : BannerAdEventCallback {
      override fun onAdImpression() {
        // Banner ad recorded an impression.
        Log.d(TAG, "Banner ad recorded an impression.")
      }

      override fun onAdClicked() {
        // Banner ad recorded a click.
        Log.d(TAG, "Banner ad clicked.")
      }

      override fun onAdShowedFullScreenContent() {
        // Banner ad showed.
        Log.d(TAG, "Banner ad showed full screen content.")
      }

      override fun onAdDismissedFullScreenContent() {
        // Banner ad dismissed.
        Log.d(TAG, "Banner ad dismissed full screen content.")
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // Banner ad failed to show.
        Log.w(TAG, "Banner ad failed to show full screen content: $fullScreenContentError")
      }
    }
}

Java

@Override
public void onAdLoaded(@NonNull BannerAd bannerAd) {
  bannerAd.setAdEventCallback(
      new BannerAdEventCallback() {
        @Override
        public void onAdImpression() {
          // Banner ad recorded an impression.
          Log.d(TAG, "Banner ad recorded an impression.");
        }

        @Override
        public void onAdClicked() {
          // Banner ad recorded a click.
          Log.d(TAG, "Banner ad clicked.");
        }

        @Override
        public void onAdShowedFullScreenContent() {
          // Banner ad showed.
          Log.d(TAG, "Banner ad showed full screen content.");
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // Banner ad dismissed.
          Log.d(TAG, "Banner ad dismissed full screen content.");
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          // Banner ad failed to show.
          Log.w(
              TAG,
              "Banner ad failed to show full screen content: " + fullScreenContentError);
        }
      });
}

BannerAdEventCallback arayüzü, tam ekran içerik etkinliklerini aşağıdaki şekilde işler:

  • Uygulama içi yer paylaşımları: GMA Next-Gen SDK, yalnızca bir banner reklam uygulamanızda genişletilmiş Mobil Rich Media Reklam Arayüz Tanımları (MRAID) reklamı veya Reklam Seçenekleri yer paylaşımı gibi bir yer paylaşımı sunduğunda ya da kapattığında onAdShowedFullScreenContent ve onAdDismissedFullScreenContent yöntemlerini çağırır.

  • Harici gezinme: Reklam tıklaması, uygulamanızın dışına (ör. harici bir tarayıcıya veya uygulama mağazasına) yönlendirdiğinde GMA Next-Gen SDK bu yöntemleri çağırmaz. Bir kullanıcının reklamı tıkladıktan sonra uygulamanızdan ne zaman ayrıldığını veya uygulamanıza ne zaman döndüğünü tespit etmek için onAdClicked yönteminin yanı sıra uygulama yaşam döngüsü olaylarını dinleyin.

Reklam yenileme geri çağırma işlevi

Banner reklamlar için otomatik yenileme kullanıyorsanız BannerAdRefreshCallback, reklam yenileme etkinliklerini yönetir. Reklam görünümünü görünüm hiyerarşinize eklemeden önce geri çağırmayı ayarladığınızdan emin olun. Reklam yenileme hakkında ayrıntılı bilgi için Reklam yenileme başlıklı makaleyi inceleyin.

Kotlin

adView.loadAd(
  adRequest,
  object : AdLoadCallback<BannerAd> {
    override fun onAdLoaded(ad: BannerAd) {
      ad.bannerAdRefreshCallback =
        object : BannerAdRefreshCallback {
          override fun onAdRefreshed() {
            // Banner ad refreshed.
            Log.d(TAG, "Banner ad refreshed.")
          }

          override fun onAdFailedToRefresh(adError: LoadAdError) {
            // Banner ad failed to refresh.
            Log.w(TAG, "Banner ad failed to refresh: $adError")
          }
        }
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Banner ad failed to load.
      Log.w(TAG, "Banner ad failed to load: $adError")
    }
  },
)

Java

adView.loadAd(
    adRequest,
    new AdLoadCallback<BannerAd>() {
      @Override
      public void onAdLoaded(@NonNull BannerAd bannerAd) {
        bannerAd.setBannerAdRefreshCallback(
            new BannerAdRefreshCallback() {
              @Override
              public void onAdRefreshed() {
                // Banner ad refreshed.
                Log.d(TAG, "Banner ad refreshed.");
              }

              @Override
              public void onAdFailedToRefresh(@NonNull LoadAdError adError) {
                // Banner ad failed to refresh.
                Log.w(TAG, "Banner ad failed to refresh: " + adError);
              }
            });
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError adError) {
        // Banner ad failed to load.
        Log.w(TAG, "Banner ad failed to load: " + adError);
      }
    });

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 bu özelliği devre dışı bırakmayı seçebilir. 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 örnekte, donanım hızlandırma tüm uygulama için 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ışı 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.

GMA Next-Gen SDK kullanımını gösteren örnek uygulamayı indirip çalıştırın.