Reklam ön yüklemesi (beta)

Reklam ön yüklemesi, Google Mobile Ads SDK uygulamasında reklam yükleme ve önbelleğe alma işlemlerini sizin adınıza yöneten, Google tarafından yönetilen bir reklam yükleme özelliğidir. Reklam ön yüklemesi, reklam yüklemeyi yönetme şeklinizde değişiklik yapılmasını gerektirir. Reklam ön yüklemesini kullanarak performansı optimize etmek için özel önbelleğe almayı devre dışı bırakın ve bu sorumluluğu Google Mobile Ads SDK platformuna devredin.

Reklam ön yüklemesi, manuel reklam yüklemeye kıyasla aşağıdaki avantajları sunar:

  • Referans yönetimi: Yüklenen reklamları tutar. Böylece, reklamları göstermeye hazır olana kadar referansları saklamanız gerekmez.
  • Otomatik yeniden yükleme: Önbellekten bir reklam aldığınızda otomatik olarak yeni bir reklam yükler.
  • Yönetilen yeniden denemeler: eksponansiyel geri yükleme kullanarak başarısız istekleri otomatik olarak yeniden dener.
  • Süre sonu işleme: Reklamların süresi dolmadan önce (genellikle bir saat sonra) otomatik olarak yenilenir.
  • Önbellek optimizasyonu: Birden büyük bir önbellek boyutu kullanırsanız Google Mobile Ads SDK, en iyi reklamı yayınlamak için önbellek sırasını optimize eder.

Bu kılavuzda, önceden yüklenmiş reklamları yapılandırma, önceden yüklenmiş reklamların kullanılabilirliğini kontrol etme ve önceden yüklenmiş reklamı gösterme konuları ele alınmaktadır.

Ön koşullar

Bu eğitimle devam etmeden önce Google Mobile Ads SDK uygulamasını ayarlamanız gerekir.

Reklamları önceden yüklemeye başlama

Uygulama başladığında preload yöntemini bir kez çağırın. preload yöntemini çağırdıktan sonra Google Mobile Ads SDK, reklamları otomatik olarak önceden yükler ve önceden yüklenmiş yapılandırmalar için başarısız istekleri yeniden dener.

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

Swift

// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
  adUnitID: adUnitID, request: request)
InterstitialAdPreloader.shared.preload(
  for: adUnitID, configuration: interstitialConfig, delegate: self)

Objective-C

// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
                                                request:request];

[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
                                                 configuration:interstitialConfig
                                                      delegate:self];

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

Reklam ön yüklemesi kullanılırken Google Mobile Ads SDK, önbelleğe alınmış reklamları tutar. Reklam göstermek istediğinizde adWithPreloadID yöntemini çağırın. Google Mobile Ads SDK, kullanılabilir bir reklamı alır ve bir sonraki reklamı arka planda otomatik olarak önceden yükler.

Reklam göstermeye hazır olana kadar adWithPreloadID yöntemini çağırmaktan kaçının. Reklamların önbellekte tutulması, Google Mobile Ads SDK uygulamasının süresi dolmuş reklamları otomatik olarak yenilemesine ve önbellek optimizasyonu yapmasına olanak tanır.

Aşağıdaki örnekte, önceden yüklenmiş bir reklam alınır ve gösterilir:

Swift

private func showInterstitialAd(adUnitID: String) {
  // Verify that the preloaded ad is available before polling.
  guard isInterstitialAvailable(adUnitID: adUnitID) else {
    print("Preloaded interstitial ad is not available.")
    return
  }

  // Polling returns the next available ad and loads another ad in the background.
  let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)

  // Interact with the ad object as needed.
  print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
  ad?.paidEventHandler = { (value: AdValue) in
    print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
  }

  ad?.fullScreenContentDelegate = self
  ad?.present(from: self)
}

Objective-C

- (void)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that the preloaded ad is available before polling.
  if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
    NSLog(@"Preloaded interstitial ad is not available.");
    return;
  }

  // Getting the preloaded ad loads another ad in the background.
  GADInterstitialAd *ad =
      [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];

  // Interact with the ad object as needed.
  NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
  ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
    NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
  };
  ad.fullScreenContentDelegate = self;
  [ad presentFromRootViewController:self];
}

Önceden yüklenmiş reklam meta verilerini alma

Önceden yüklenmiş reklam meta verilerini almak için reklamın yanıt bilgisi nesnesine bakabilirsiniz. Bu işlem, reklamı önbellekten kaldırmadan reklamın meta verilerini incelemenize olanak tanır.

Aşağıdaki örnekte, önceden yüklenmiş bir reklamın meta verileri yanıt bilgisi nesnesinden aranmaktadır:

Swift

private func getInterstitialAdResponseInfo(preloadID: String) {
  // Get the response info for the preloaded ad.
  if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
    with: preloadID)
  {
    print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
  }
}

Objective-C

- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
  // Get the response info for the preloaded ad.
  GADResponseInfo *responseInfo =
      [GADInterstitialAdPreloader.sharedInstance
          adResponseInfoWithPreloadID:preloadID];
  if (responseInfo) {
    NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
  }
}

Önceden yüklenen reklamların kullanılabilirliğini kontrol etme

Reklam kullanılabilirliğini kontrol etmek için aşağıdakilerden birini seçin:

Önceden yüklenmiş reklamların kullanılabilirliğini öğrenme

Aşağıdaki örnekte reklam kullanılabilirliği kontrol edilmektedir:

Swift

private func isInterstitialAvailable(adUnitID: String) -> Bool {
  // Verify that an ad is available before polling.
  return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}

Objective-C

- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that an ad is available before polling.
  return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}

Önceden yüklenmiş reklamların kullanılabilirliğini dinleme

Reklamlar başarıyla önceden yüklendiğinde, önceden yüklenemediğinde veya reklam önbelleği tükendiğinde bildirim almak için ön yükleme etkinliklerine kaydolun.

Ön yükleme etkinlikleri, analiz amacıyla kullanılır. Ön yükleme etkinliği geri çağırmalarında:

  • preload numarasını arama
  • Reklam hemen gösterilmeyecekse adWithPreloadID yöntemini çağırmaktan kaçının.

Aşağıdaki örnekte reklam etkinlikleri için kayıt işlemi gösterilmektedir:

Swift

func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}

func adsExhausted(forPreloadID preloadID: String) {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call InterstitialAdPreloader.shared.preload or
  // InterstitialAdPreloader.shared.ad from adsExhausted.
  print("Ad exhausted for ad preload ID: \(preloadID)")
}

func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
  print(
    "Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
  )
}

Objective-C

- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID
                   responseInfo:(nonnull GADResponseInfo *)responseInfo {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}

- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
  // [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
  NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}

- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID
                                error:(nonnull NSError *)error {
  NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID,
        error.localizedDescription);
}

Reklamları önceden yüklemeyi durdurma

Oturumda bir önceden yükleme kimliği için tekrar reklam göstermeniz gerekmiyorsa reklamları önceden yüklemeyi durdurabilirsiniz. Belirli bir önceden yükleme kimliği için reklamların önceden yüklenmesini durdurmak istiyorsanız önceden yükleme kimliğiyle stopPreloadingAndRemoveAdsForPreloadID yöntemini çağırın. Tüm ön yükleyiciler için ön yüklemeyi durdurmak istiyorsanız stopPreloadingAndRemoveAllAds yöntemini çağırın.

Arabellek boyutunu ayarlama

Arabellek boyutu, bellekte tutulan önceden yüklenmiş reklamların sayısını kontrol eder. Google, varsayılan olarak bellek tüketimini ve reklam sunma gecikmesini dengelemek için arabellek boyutunu optimize eder. Uygulamanız bir sonraki reklam yüklenmeden önce reklam gösteriyorsa bellekte tutulan reklam sayısını artırmak için özel bir arabellek boyutu ayarlayabilirsiniz.

Swift

let preloadConfig = PreloadConfigurationV2(adUnitID: adUnitID)
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2

Objective-C

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID];
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2;

Önbellek sınırlarını önceden yükleme

Google Mobile Ads SDK, tüm reklam birimleri ve önceden yükleme kimlikleri genelinde önceden yüklenen toplam reklam sayısı için uygulama genelinde bir sınır uygular:

  • Varsayılan sınır: Google Mobile Ads SDK, bellekte en fazla 6 önceden yüklenmiş reklam tutar. Bu sınır, tüm biçimler ve önceden yükleme kimlikleri arasında paylaşılır.
  • Her önceden yükleme kimliği için iki arabellek boyutu kullanmanızı öneririz.