پیش‌بار کردن آگهی (نسخه بتا)

پلاتفرم را انتخاب کنید: Android iOS Unity Flutter Android (Legacy)

پیش‌بارگیری آگهی یکی از ویژگی‌های بار کردن آگهی تحت مدیریت Google در Google Mobile Ads SDK است که بار کردن و ذخیره آگهی در حافظه نهان را ازطرف شما مدیریت می‌کند. پیش‌بار کردن آگهی مستلزم تغییر در نحوه مدیریت بار کردن آگهی است. برای بهینه‌سازی عملکرد بااستفاده از پیش‌بارگیری آگهی، ذخیره‌سازی سفارشی در حافظه نهان را غیرفعال کنید و این مسئولیت را به Google Mobile Ads SDK واگذار کنید.

پیش‌بار کردن آگهی نسبت به بار کردن دستی آگهی مزایای زیر را ارائه می‌دهد:

  • مدیریت مرجع: آگهی‌های بارشده را نگه می‌دارد تا مجبور نباشید مرجع‌ها را تا زمانی که آماده نمایش آن‌ها هستید حفظ کنید.
  • بار کردن مجدد خودکار: وقتی آگهی‌ای را از حافظه نهان بیرون می‌کشید، آگهی جدیدی را به‌طور خودکار بار می‌کند.
  • تلاش‌های مجدد مدیریت‌شده: به‌طور خودکار درخواست‌های ناموفق را بااستفاده از عقب‌گرد نمایی دوباره امتحان می‌کند.
  • مدیریت انقضا: آگهی‌ها را قبل‌از منقضی شدن (معمولاً پس‌از یک ساعت) به‌طور خودکار بازآوری می‌کند.
  • بهینه‌سازی حافظه نهان: اگر از اندازه حافظه نهان بزرگ‌تر از یک استفاده می‌کنید، Google Mobile Ads SDK ترتیب حافظه نهان را برای ارائه بهترین آگهی بهینه‌سازی می‌کند.

این راهنما پیکربندی آگهی‌های پیش‌بارگیری، بررسی دردسترس بودن آگهی پیش‌بارگیری، و نمایش آگهی پیش‌بارگیری‌شده را پوشش می‌دهد.

پیش‌نیازها

قبل‌از ادامه دادن این آموزش، باید Google Mobile Ads SDK را راه‌اندازی کنید.

شروع پیش‌بارگیری آگهی‌ها

وقتی برنامه شروع می‌شود، روش preload را یک‌بار فراخوانی کنید. پس‌از فراخوانی روش preload، Google Mobile Ads SDK به‌طور خودکار آگهی‌ها را پیش‌بارگیری می‌کند و درخواست‌های ناموفق برای پیکربندی‌های پیش‌بارگیری‌شده را دوباره امتحان می‌کند.

مثال زیر پیش‌بارگذاری آگهی‌ها را شروع می‌کند:

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)

آبجکتیو-سی

// 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];

دریافت و نمایش آگهی پیش‌بارشده

هنگام استفاده از پیش‌بارگیری آگهی، Google Mobile Ads SDK آگهی‌های ذخیره‌شده در حافظه نهان را نگه می‌دارد. وقتی می‌خواهید آگهی نشان دهید، روش adWithPreloadID را فراخوانی کنید. Google Mobile Ads SDK آگهی دردسترسی را بازیابی می‌کند و به‌طور خودکار آگهی بعدی را در پس‌زمینه پیش‌بارگیری می‌کند.

تا زمانی که برای نمایش آگهی آماده نشده‌اید، از فراخوانی روش adWithPreloadID خودداری کنید. نگه داشتن آگهی‌ها در حافظه پنهان به Google Mobile Ads SDK اجازه می‌دهد آگهی‌های منقضی‌شده را به‌طور خودکار بازآوری کند و بهینه‌سازی حافظه پنهان را انجام دهد.

مثال زیر یک آگهی پیش‌بارشده را بازیابی و نمایش می‌دهد:

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

آبجکتیو-سی

- (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];
}

دریافت فراداده آگهی پیش‌بارشده

برای دریافت فراداده آگهی پیش‌بارشده، می‌توانید شیء اطلاعات پاسخ آگهی را جستجو کنید. این فرایند به شما امکان می‌دهد فراداده آگهی را بدون برداشتن آن از حافظه نهان بازرسی کنید.

مثال زیر فراداده آگهی پیش‌بارشده را از شیء اطلاعات پاسخ جستجو می‌کند:

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 ?? "")")
  }
}

آبجکتیو-سی

- (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);
  }
}

بررسی دردسترس بودن پیش‌بارگیری آگهی

برای بررسی دردسترس بودن آگهی، یکی از موارد زیر را انتخاب کنید:

دریافت دردسترس بودن آگهی پیش‌بارشده

مثال زیر دردسترس بودن آگهی را بررسی می‌کند:

Swift

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

آبجکتیو-سی

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

گوش دادن به دردسترس بودن آگهی پیش‌بارشده

برای رویدادهای پیش‌بارکردن ثبت‌نام کنید تا وقتی آگهی‌ها با موفقیت پیش‌بار شدند، پیش‌بار نشدند، یا حافظه نهان آگهی تمام شد، مطلع شوید.

رویدادهای پیش‌بارکردن برای اهداف تجزیه‌وتحلیل درنظر گرفته شده‌اند. درون رویداد پیش‌بارکردن برگشت‌های فراخوانی:

  • با ‎preload تماس نگیر.
  • از فراخوانی adWithPreloadID اجتناب کنید، مگراینکه آگهی بلافاصله نشان داده شود.

مثال زیر برای رویدادهای آگهی ثبت می‌شود:

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)"
  )
}

آبجکتیو-سی

- (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);
}

توقف پیش‌بارگیری آگهی‌ها

اگر لازم نیست آگهی‌های مربوط به شناسه پیش‌بارگیری را دوباره در جلسه نشان دهید، می‌توانید پیش‌بارگیری آگهی‌ها را متوقف کنید. برای متوقف کردن پیش‌بارگیری آگهی‌ها برای شناسه پیش‌بارگیری خاص، stopPreloadingAndRemoveAdsForPreloadID را با شناسه پیش‌بارگیری فراخوانی کنید. برای متوقف کردن پیش‌بارگیری برای همه پیش‌بارگذارها، stopPreloadingAndRemoveAllAds را فراخوانی کنید.

تنظیم اندازه میان‌گیر

اندازه میان‌گیر تعداد آگهی‌های پیش‌بارشده را که در حافظه نگهداری می‌شوند کنترل می‌کند. به‌طور پیش‌فرض، Google اندازه میان‌گیر را بهینه‌سازی می‌کند تا مصرف حافظه و تأخیر ارائه آگهی را متعادل کند. اگر برنامه‌تان آگهی‌ها را قبل‌از بار شدن آگهی بعدی نمایش می‌دهد، می‌توانید اندازه میان‌گیر سفارشی تنظیم کنید تا تعداد آگهی‌های نگهداری‌شده در حافظه را افزایش دهید.

Swift

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

آبجکتیو-سی

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

حدود حافظه نهان پیش‌بارکردن

Google Mobile Ads SDK محدودیتی را در سطح برنامه برای تعداد کل آگهی‌های پیش‌بارشده در همه واحدهای آگهی و شناسه‌های پیش‌بارشده اعمال می‌کند:

  • محدودیت پیش‌فرض: Google Mobile Ads SDK حداکثر ۶ آگهی پیش‌بارشده را در حافظه نگه می‌دارد. این محدودیت برای همه قالب‌ها و شناسه‌های پیش‌بارگذاری مشترک است.
  • توصیه می‌کنیم اندازه میان‌گیر را برای هر شناسه پیش‌بارگیری روی دو نگه دارید.