پیشبارگذاری تبلیغات یک ویژگی بارگذاری تبلیغات تحت مدیریت گوگل در Google Mobile Ads SDK است که بارگذاری و ذخیرهسازی تبلیغات را از طرف شما مدیریت میکند. پیشبارگذاری تبلیغات نیاز به تغییر در نحوه مدیریت بارگذاری تبلیغات دارد. برای بهینهسازی عملکرد با استفاده از پیشبارگذاری تبلیغات، ذخیرهسازی سفارشی را غیرفعال کنید و این مسئولیت را به Google Mobile Ads SDK واگذار کنید.
پیش بارگذاری تبلیغات مزایای زیر را نسبت به بارگذاری دستی تبلیغات ارائه میدهد:
- مدیریت ارجاعات: تبلیغات بارگذاریشده را نگه میدارد، بنابراین لازم نیست ارجاعات را تا زمانی که آماده نمایش آنها نیستید، نگه دارید.
- بارگذاری مجدد خودکار: وقتی تبلیغی را از حافظه پنهان (cache) بیرون میکشید، بهطور خودکار آن را بارگذاری میکند.
- تلاشهای مجدد مدیریتشده: بهطور خودکار درخواستهای ناموفق را با استفاده از backoff نمایی دوباره امتحان میکند.
- مدیریت انقضا: تبلیغات را قبل از انقضا (معمولاً بعد از یک ساعت) به طور خودکار بهروزرسانی میکند.
- بهینهسازی حافظه پنهان: اگر از اندازه حافظه پنهان بزرگتر از یک استفاده کنید، Google Mobile Ads SDK ترتیب حافظه پنهان را برای ارائه بهترین تبلیغ بهینه میکند.
این راهنما پیکربندی تبلیغات پیشبارگذاریشده، بررسی در دسترس بودن تبلیغات پیشبارگذاریشده و نمایش تبلیغ پیشبارگذاریشده را پوشش میدهد.
پیشنیازها
قبل از ادامه آموزش، باید موارد زیر را تکمیل کنید:
- نسخه ۱۲.۶.۰ یا بالاتر Google Mobile Ads SDK را نصب کنید. منابع توسعهدهندگان برای نسخههای قبلی در ۱۱.۱۲.۰ تا ۱۲.۲.۰ موجود است، اما توصیه میکنیم از نسخه ۱۲.۶.۰ یا بالاتر استفاده کنید و از این به بعد این راهنما را دنبال کنید.
- کیت توسعه Google Mobile Ads SDK را راهاندازی کنید .
هدرهای پیشنمایش پیشبارگذاری را دانلود کرده و در پروژه خود قرار دهید.
اختیاری: برنامه نمونه پیشبارگذاری تبلیغات را دانلود و اجرا کنید.
شروع پیش بارگذاری تبلیغات
برای شروع پیشبارگذاری تبلیغات، تابع preload() را فراخوانی کنید. این متد را فقط یک بار در ابتدای برنامه فراخوانی کنید. پس از فراخوانی preload() ، کیت توسعه نرمافزاری Google Mobile Ads SDK به طور خودکار تبلیغات را پیشبارگذاری میکند و درخواستهای ناموفق برای پیکربندیهای از پیش بارگذاری شده را دوباره امتحان میکند.
مثال زیر شروع به پیش بارگذاری تبلیغات میکند:
سویفت
// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
adUnitID: Constants.interstitialAdUnitID, request: request)
InterstitialAdPreloader.shared.preload(
for: Constants.interstitialAdUnitID, configuration: interstitialConfig, delegate: self)
هدف-سی
// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig = [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:interstitialAdUnitID request:request];
[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:interstitialAdUnitID
configuration:interstitialConfig
delegate:self];
دریافت و نمایش تبلیغ از پیش بارگذاری شده
هنگام استفاده از پیشبارگذاری تبلیغ، Google Mobile Ads SDK ، تبلیغات ذخیرهشده را نگه میدارد. وقتی میخواهید یک تبلیغ را نمایش دهید، تابع adWithPreloadID() را فراخوانی کنید. Google Mobile Ads SDK تبلیغ موجود را بازیابی کرده و بهطور خودکار تبلیغ بعدی را در پسزمینه پیشبارگذاری میکند.
تا زمانی که آماده نمایش تبلیغ نیستید، از فراخوانی این متد خودداری کنید. نگه داشتن تبلیغات در حافظه پنهان Google Mobile Ads SDK اجازه میدهد تا به طور خودکار تبلیغات منقضی شده را بهروزرسانی کرده و بهینهسازی حافظه پنهان را انجام دهد.
مثال زیر یک تبلیغ از پیش بارگذاری شده را بازیابی و نمایش میدهد:
سویفت
private func showInterstitialAd() {
// Verify that the preloaded ad is available before polling.
guard isInterstitialAvailable() else {
printAndShowAlert("Preload interstitial ad is exhausted.")
return
}
// Polling returns the next available ad and load another ad in the background.
let ad = InterstitialAdPreloader.shared.ad(with: Constants.interstitialAdUnitID)
// 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)showInterstitialAd {
// Verify that the preloaded ad is available before polling.
if (![self isInterstitialAvailable]) {
[self logAndShowAlert:@"Preloaded interstitial ad is not available."];
return;
}
// Getting the preloaded ad loads another ad in the background.
GADInterstitialAd *ad = [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:interstitialAdUnitID];
// 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 isInterstitialAvailable() -> Bool {
// Verify that an ad is available before polling.
return InterstitialAdPreloader.shared.isAdAvailable(with: Constants.interstitialAdUnitID)
}
هدف-سی
- (BOOL)isInterstitialAvailable {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:(interstitialAdUnitID)];
}
به در دسترس بودن تبلیغات از پیش بارگذاری شده گوش دهید
برای دریافت اطلاع از زمان پیشبارگذاری موفقیتآمیز تبلیغات، عدم موفقیت در پیشبارگذاری یا اتمام حافظه پنهان تبلیغات، در رویدادهای پیشبارگذاری ثبتنام کنید.
رویدادهای پیش بارگذاری برای اهداف تحلیلی در نظر گرفته شدهاند. در داخل رویدادهای پیش بارگذاری، فراخوانیهای زیر انجام میشود:
- تابع
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.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.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.
// [Important] 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() را با یک شناسهی پیشبارگذاری فراخوانی کنید.
اندازه بافر را تنظیم کنید
اندازه بافر، تعداد تبلیغات از پیش بارگذاری شده در حافظه را کنترل میکند. به طور پیشفرض، گوگل اندازه بافر را بهینه میکند تا مصرف حافظه و تأخیر نمایش تبلیغات را متعادل کند. اگر برنامه شما قبل از بارگذاری تبلیغ بعدی، تبلیغات را نمایش میدهد، میتوانید یک اندازه بافر سفارشی تنظیم کنید تا تعداد تبلیغات نگهداری شده در حافظه را افزایش دهید. ما اندازه بافر را حداکثر چهار توصیه میکنیم.
سویفت
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
هدف-سی
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;