Reklam ön yüklemesine geçiş

Reklam önceden yükleme, GMA Next-Gen SDK içinde reklam yükleme, önbelleğe alma ve yeniden yükleme işlemlerini otomatikleştirir. Tekli yükleme kullanıyorsanız otomatik yaşam döngüsü yönetimi, yönetilen yeniden denemeler ve optimize edilmiş reklam seçimi için reklam ön yüklemesine geçin. Reklam ön yüklemesiyle ilgili kavramsal ayrıntılar için Reklam ön yüklemesi başlıklı makaleyi inceleyin. Reklam ön yüklemesi; uygulama açılış, geçiş, ödüllü ve ödüllü geçiş reklamı biçimlerini destekler.

Bu sayfada, mevcut bir tek yüklemeli reklam uygulamasını reklam ön yüklemesine taşıma adımları açıklanmaktadır. Bu kılavuzda örnek olarak geçiş reklamları kullanılsa da aynı işlemi desteklenen reklam biçimlerine uygulayabilirsiniz.

Ön koşullar

Devam etmeden önce aşağıdakileri tamamlayın:

Reklam ön yüklemesiyle reklam isteme

Tek yüklemede, her reklam isteği için tek bir reklam istersiniz. Reklam ön yüklemesiyle, ön yükleyiciyi ön yükleme kimliğiniz ve ön yükleme yapılandırmanızla bir kez başlatırsınız.

Aşağıdaki örneklerde, tek yüklemeli reklam istekleri ile reklam ön yüklemesi karşılaştırılmaktadır:

Kotlin

Tek yükleme:

// Request a single ad.
val adRequest = AdRequest.Builder(adUnitId).build()
InterstitialAd.load(adRequest, adLoadCallback)

Reklam ön yüklemesi:

// Start the preloader once with a preload configuration.
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)

Java

Tek yükleme:

// Request a single ad.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
InterstitialAd.load(adRequest, adLoadCallback);

Reklam ön yüklemesi:

// Start the preloader once with a preload configuration.
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);

Önceden yükleme geri çağırmalarına geçme

Tekli yüklemede, her bir reklam isteğine bir yükleme geri çağırma işlevi eklersiniz. Reklam ön yüklemesiyle, ön yükleyici önbellek güncellemelerini gözlemlemek için bir geri çağırma işleyici kaydedersiniz. Bu geri çağırmalar, reklamların önceden yüklenmesi tamamlandığında, yüklenemediğinde veya önbellek dolduğunda uygulamanızı bilgilendirir.

Aşağıdaki örneklerde, tek yükleme ve reklam önceden yükleme için önceden yükleme geri çağırmalarının nasıl kaydedileceği karşılaştırılmaktadır:

Kotlin

Tek yükleme:

// Listen for single ad request load results.
val adLoadCallback =
  object : AdLoadCallback<InterstitialAd> {
    override fun onAdLoaded(ad: InterstitialAd) {
      // Ad loaded for a single request.
    }

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

InterstitialAd.load(adRequest, adLoadCallback)

Reklam ön yüklemesi:

// Observe cache updates across multiple ads.
val preloadCallback =
  object : PreloadCallback {
    override fun onAdPreloaded(
      preloadId: String,
      responseInfo: ResponseInfo,
    ) {
      // Ad preloaded into the cache and is ready to show.
    }

    override fun onAdFailedToPreload(
      preloadId: String,
      adError: LoadAdError,
    ) {
      Log.d(TAG, "Ad failed to preload: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      // All preloaded ads in the cache have been shown.
      Log.d(TAG, "Ads exhausted for: $preloadId")
    }
  }

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

Tek yükleme:

// Listen for single ad request load results.
AdLoadCallback<InterstitialAd> adLoadCallback =
    new AdLoadCallback<InterstitialAd>() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd ad) {
        // Ad loaded for a single request.
      }

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

InterstitialAd.load(adRequest, adLoadCallback);

Reklam ön yüklemesi:

// Observe cache updates across multiple ads.
PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        // Ad preloaded into the cache and is ready to show.
      }

      @Override
      public void onAdFailedToPreload(
          @NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // All preloaded ads in the cache have been shown.
        Log.d(TAG, "Ads exhausted for: " + preloadId);
      }
    };

InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

Ön yükleyici, GMA Next-Gen SDK bir reklamı yüklediğinde veya önbelleğe aldığında ya da uygulamanız bir reklam gösterdiğinde geri çağırma yöntemlerini çağırır.

Önbellekten reklam gösterme

Tekli yüklemede, yüklenen reklamı bir değişkene kaydedip reklamı kullanılabilir olduğunda gösterirsiniz. Reklam ön yüklemesi sayesinde, gösterilecek bir reklam olduğunda reklamı doğrudan önbellekten alırsınız. Her iki yaklaşımda da, göstermeden önce etkinlik işleyicinizi reklama ekleyin.

Aşağıdaki örneklerde, reklam ön yüklemesiyle reklam gösterme ile tekli yükleme karşılaştırılmaktadır:

Kotlin

Tek yükleme:

// Retrieve the ad from a saved variable.
val interstitialAd = this.interstitialAd ?: return
// Display the ad.
interstitialAd.show(activity)

Reklam ön yüklemesi:

// Retrieve the ad directly from the preloader cache.
val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
// Display the ad.
interstitialAd.show(activity)

Java

Tek yükleme:

// Retrieve the ad from a saved variable.
InterstitialAd interstitialAd = this.interstitialAd;
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

Reklam ön yüklemesi:

// Retrieve the ad directly from the preloader cache.
InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
if (interstitialAd == null) {
  return;
}
// Display the ad.
interstitialAd.show(activity);

Manuel önbelleğe alma ve yeniden yükleme işlemlerini kaldırma

Önceden yükleyici, reklamı aldığınızda otomatik olarak yeni bir reklam yükler. Tek yüklemeden farklı olarak, reklam referanslarını manuel olarak depolamanız veya yeniden yükleme mantığı yazmanız gerekmez.

Kodunuzdan aşağıdaki kalıpları kaldırın:

  • Üye değişkeni önbelleğe alma: Reklam nesnelerini depolayan üye değişkenlerini silin.
  • Manuel yeniden yüklemeler: Kullanıcınız reklamı kapattıktan veya reklam gösterilemedikten sonra yükleme çağrılarını silin.
  • Özel yeniden deneme zamanlayıcıları: Yeniden deneme işleyicilerini, geri çekilme döngülerini ve zamanlayıcıları silin. GMA Next-Gen SDK, başarısız önceden yükleme isteklerini otomatik olarak yeniden dener.

Eksiksiz örnekleri karşılaştırma

Aşağıdaki örneklerde, reklam ön yüklemesine geçişten önce ve sonra eksiksiz bir geçiş reklamı uygulaması karşılaştırılmaktadır:

Kotlin

Tek yükleme:

// 1. Maintain a member variable to store the ad.
private var interstitialAd: InterstitialAd? = null

// 2. Load the ad and listen for load completion.
private fun loadAd() {
  val adRequest = AdRequest.Builder(adUnitId).build()
  InterstitialAd.load(
    adRequest,
    object : AdLoadCallback<InterstitialAd> {
      override fun onAdLoaded(ad: InterstitialAd) {
        interstitialAd = ad
      }

      override fun onAdFailedToLoad(adError: LoadAdError) {
        interstitialAd = null
      }
    },
  )
}

// 3. Show the saved ad.
private fun showAd(activity: Activity) {
  val interstitialAd = this.interstitialAd ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Reload the ad after dismissal in single-load integrations.
        loadAd()
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

Reklam ön yüklemesi:

// 1. Start preloading with a callback to listen for loaded ads.
private fun startPreloading(adUnitId: String) {
  val preloadCallback =
    object : PreloadCallback {
      override fun onAdPreloaded(
        preloadId: String,
        responseInfo: ResponseInfo,
      ) {
        // Ad preloaded successfully.
      }

      override fun onAdFailedToPreload(
        preloadId: String,
        adError: LoadAdError,
      ) {
        Log.d(TAG, "Ad failed to preload: ${adError.message}")
      }
    }

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

// 2. Show the ad immediately after polling.
private fun showAd(activity: Activity, adUnitId: String) {
  val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return
  interstitialAd.adEventCallback =
    object : InterstitialAdEventCallback {
      override fun onAdDismissedFullScreenContent() {
        // Preloading automatically fetches a replacement ad.
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError,
      ) {
        Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}")
      }
    }
  interstitialAd.show(activity)
}

Java

Tek yükleme:

// 1. Maintain a member variable to store the ad.
private InterstitialAd interstitialAd;

// 2. Load the ad and listen for load completion.
private void loadAd() {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  InterstitialAd.load(
      adRequest,
      new AdLoadCallback<InterstitialAd>() {
        @Override
        public void onAdLoaded(@NonNull InterstitialAd ad) {
          interstitialAd = ad;
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          interstitialAd = null;
        }
      });
}

// 3. Show the saved ad.
private void showAd(Activity activity) {
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Reload the ad after dismissal in single-load integrations.
          loadAd();
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

Reklam ön yüklemesi:

// 1. Start preloading with a callback to listen for loaded ads.
private void startPreloading(String adUnitId) {
  PreloadCallback preloadCallback =
      new PreloadCallback() {
        @Override
        public void onAdPreloaded(
            @NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
          // Ad preloaded successfully.
        }

        @Override
        public void onAdFailedToPreload(
            @NonNull String preloadId, @NonNull LoadAdError adError) {
          Log.d(TAG, "Ad failed to preload: " + adError.getMessage());
        }
      };

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

// 2. Show the ad immediately after polling.
private void showAd(Activity activity, String adUnitId) {
  InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId);
  if (interstitialAd == null) {
    return;
  }
  interstitialAd.setAdEventCallback(
      new InterstitialAdEventCallback() {
        @Override
        public void onAdDismissedFullScreenContent() {
          // Preloading automatically fetches a replacement ad.
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.d(
              TAG,
              "Ad failed to show: " + fullScreenContentError.getMessage());
        }
      });
  interstitialAd.show(activity);
}

Sonraki adımlar

Önceden yükleme özelliklerini yapılandırmak, reklam biçimlerini entegre etmek ve uygulamanızı test etmek için aşağıdaki kaynakları inceleyin: