پیش‌بارگذاری تبلیغات (بتا)

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

پیش بارگذاری تبلیغات مزایای زیر را نسبت به بارگذاری دستی تبلیغات ارائه می‌دهد:

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

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

پیش‌نیازها

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

شروع پیش بارگذاری تبلیغات

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

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

سویفت

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

هدف-سی

- (void)startPreloadingWithAdUnitID:(nonnull NSString *)adUnitID {
  // 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 اجازه می‌دهد تا به طور خودکار تبلیغات منقضی شده را به‌روزرسانی کرده و بهینه‌سازی حافظه پنهان را انجام دهد.

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

سویفت

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

دریافت فراداده‌های تبلیغاتی از پیش بارگذاری شده

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

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

سویفت

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

بررسی در دسترس بودن تبلیغات پیش بارگذاری شده

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

در دسترس بودن تبلیغات از پیش بارگذاری شده را دریافت کنید

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

سویفت

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 خودداری کنید، مگر اینکه تبلیغ بلافاصله نمایش داده شود.

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

سویفت

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 را فراخوانی کنید.

اندازه بافر را تنظیم کنید

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

سویفت

let preloadConfig = PreloadConfigurationV2(adUnitID: "ca-app-pub-3940256099942544/1712485313")
preloadConfig.bufferSize = 3

هدف-سی

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
preloadConfig.bufferSize = 3;

محدودیت‌های پیش‌بارگذاری حافظه پنهان

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

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