Reklamları önceden yükleme (Alfa)

Reklam önceden yükleme, SDK tarafından yönetilen bir yükleme ve önbelleğe alma işlemidir. Bu işlem, reklamların manuel olarak yüklenmesi ve önbelleğe alınması ihtiyacını ortadan kaldırır. Bu işlem, reklamları manuel olarak yüklemeniz veya reklam yükleme geri çağırmalarını işlemeniz gerekmeden gerektiğinde reklam göstermenize olanak tanır.

Bu kılavuzda, önceden yüklenen reklamların nasıl yapılandırılacağı, önceden yüklenen reklamların kullanılabilirliğinin nasıl kontrol edileceği ve önceden yüklenen reklamın nasıl alınacağı ve gösterileceği açıklanmaktadır.

Ön koşullar

Eğiticiye devam etmeden önce aşağıdaki öğeleri tamamlamanız gerekir:

  • Google Mobile Ads SDK'sının (beta) 0.14.0-alpha01 veya daha yeni bir sürümünü yükleyin.
  • Başlangıç kılavuzunu tamamlayın.

Reklamları önceden yüklemeye başlama

Önceden yüklemeyi başlatmak için startPreload() numaralı telefonu arayın. Google Mobile Ads SDK'sı, önceden yüklenmiş yapılandırmalar için başarısız olan reklam isteklerini otomatik olarak yeniden dener.

Aşağıdaki örnekte reklamlar önceden yüklenmeye başlar:

Kotlin

private fun startPreloading(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

İsteğe bağlı: Önceden yüklenen reklamları değiştirme

Önceden yüklenen reklamları değiştirmek için destroy() işlevini çağırın ve ardından değiştirilmiş yapılandırmayla startPreload() işlevini tekrar çağırın.

İsteğe bağlı: Reklamların önceden yüklenmesini durdurma

Reklamların önceden yüklenmesini durdurmak için destroy() işlevini önceden yükleme kimliğiyle çağırın.

İsteğe bağlı: Arabellek boyutunu ayarlama

Arabellek boyutu, bellekte tutulan önceden yüklenmiş reklamların sayısını kontrol eder. Uygulamanız yeni reklamlar yüklenebileceğinden daha hızlı bir şekilde reklam gösteriyorsa arabellek boyutunu daha büyük bir değere ayarlayın. Bellek kullanımıyla ilgili endişeleriniz varsa arabellek boyutunu 2 gibi düşük bir değere ayarlayın.

Kotlin

private fun setBufferSize(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

İsteğe bağlı: Ön yükleme bildirimleri alma

Reklam önceden yükleme etkinlikleriyle ilgili bildirim almak için PreloadCallback uygulayın. Bu etkinlikler, hata ayıklama ve günlük kaydı için bir yanıt bilgisi nesnesi sağlar.

Kotlin

private fun startPreloadingWithCallback(adUnitID: String) {
  val preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    object : PreloadCallback {
      override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
        Log.i(
          TAG,
          ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
        )
        // [Optional] Get the error response info for additional details.
        // val responseInfo = adError.responseInfo
      }

      override fun onAdsExhausted(preloadId: String) {
        Log.i(TAG, "Interstitial preload ad $preloadId is not available")
      }

      override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
        Log.i(TAG, "Interstitial preload ad $preloadId is available")
      }
    }
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig, preloadCallback)
}

Java

private void startPreloadingWithCallback(String adUnitId) {
  PreloadCallback preloadCallback =
      // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
      new PreloadCallback() {
        @Override
        public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
          Log.e(
              TAG,
              String.format(
                  "Interstitial preload ad %s failed to load with error: %s",
                  preloadId, adError.getMessage()));
          // [Optional] Get the error response info for additional details.
          // ResponseInfo responseInfo = adError.getResponseInfo();
        }

        @Override
        public void onAdsExhausted(String preloadId) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
        }

        @Override
        public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
        }
      };

  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}

Önceden yüklenmiş reklamı alma ve gösterme

onAdsAvailable() çağrıldıktan sonra reklamlar gösterilebilir. Reklamlar gösterilip tükendikçe sürekli olarak kullanıma sunulur. Reklam aldıktan sonra reklam yaşam döngüsü etkinliklerini dinleyin ve reklamı gösterin.

Aşağıdaki örnekte önceden yüklenmiş bir reklam gösterilmektedir:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitID: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = InterstitialAdPreloader.pollAd(adUnitID)

  // Interact with the ad object as needed.
  ad?.apply {
    Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
    this.adEventCallback =
      object : InterstitialAdEventCallback {
        override fun onAdImpression() {
          Log.d(TAG, "Interstitial ad recorded an impression.")
        }

        override fun onAdPaid(value: AdValue) {
          Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
        }
      }

    // Show the ad.
    ad.show(activity)
  }
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad != null) {
    Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
    ad.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdImpression() {
            Log.d(TAG, "Interstitial ad recorded an impression.");
          }

          @Override
          public void onAdPaid(AdValue value) {
            Log.d(
                TAG,
                "Interstitial ad onPaidEvent: "
                    + value.getValueMicros()
                    + " "
                    + value.getCurrencyCode());
          }
        });

    // Show the ad.
    ad.show(activity);
  }
}

İsteğe bağlı: Önceden yüklenmiş reklamların kullanılabilirliğini kontrol edin

Reklamların kullanılabilir olup olmadığını öğrenmek için isAdAvailable numaralı telefonu arayın:

Kotlin

private fun isAdAvailable(adUnitID: String): Boolean {
  return InterstitialAdPreloader.isAdAvailable(adUnitID)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return InterstitialAdPreloader.isAdAvailable(adUnitId);
}