پیشبارگذاری تبلیغات یک ویژگی بارگذاری تبلیغات تحت مدیریت گوگل در GMA Next-Gen SDK است که بارگذاری و ذخیرهسازی تبلیغات را از طرف شما مدیریت میکند. پیشبارگذاری تبلیغات نیاز به تغییر در نحوه مدیریت بارگذاری تبلیغات دارد. برای بهینهسازی عملکرد با استفاده از پیشبارگذاری تبلیغات، ذخیرهسازی سفارشی را غیرفعال کنید و این مسئولیت را به GMA Next-Gen SDK واگذار کنید.
پیش بارگذاری تبلیغات مزایای زیر را نسبت به بارگذاری دستی تبلیغات ارائه میدهد:
- مدیریت ارجاعات: تبلیغات بارگذاریشده را نگه میدارد، بنابراین لازم نیست ارجاعات را تا زمانی که آماده نمایش آنها نیستید، نگه دارید.
- بارگذاری مجدد خودکار: وقتی تبلیغی را از حافظه پنهان بیرون میکشید، بهطور خودکار آن را بارگذاری میکند.
- تلاشهای مجدد مدیریتشده: بهطور خودکار درخواستهای ناموفق را با استفاده از backoff نمایی دوباره امتحان میکند.
- مدیریت انقضا: تبلیغات را قبل از انقضا (معمولاً بعد از یک ساعت) به طور خودکار بهروزرسانی میکند.
- بهینهسازی حافظه پنهان: اگر از اندازه حافظه پنهان بزرگتر از یک استفاده کنید، GMA Next-Gen SDK ترتیب حافظه پنهان را برای ارائه بهترین تبلیغ بهینه میکند.
این راهنما پیکربندی تبلیغات پیشبارگذاریشده، بررسی در دسترس بودن تبلیغات پیشبارگذاریشده و نمایش تبلیغ پیشبارگذاریشده را پوشش میدهد.
پیشنیازها
قبل از ادامه آموزش، باید موارد زیر را تکمیل کنید:
- نسخه ۰.۱۴.۰-alpha01 یا بالاتر از GMA Next-Gen SDK را نصب کنید.
- GMA Next-Gen SDK را راهاندازی کنید .
- اختیاری: برنامه نمونه را دانلود و اجرا کنید.
شروع پیش بارگذاری تبلیغات
برای شروع پیشبارگذاری تبلیغات، تابع startPreload() را فراخوانی کنید. این متد را فقط یک بار در شروع برنامه فراخوانی کنید. پس از فراخوانی startPreload() ، GMA Next-Gen SDK به طور خودکار تبلیغات را پیشبارگذاری میکند و درخواستهای ناموفق برای پیکربندیهای از پیش بارگذاری شده را دوباره امتحان میکند.
مثال زیر شروع به پیش بارگذاری تبلیغات میکند:
کاتلین
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
جاوا
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
دریافت و نمایش تبلیغ از پیش بارگذاری شده
هنگام استفاده از پیشبارگذاری تبلیغات، GMA Next-Gen SDK تبلیغات ذخیرهشده را نگه میدارد. وقتی میخواهید یک تبلیغ را نمایش دهید، pollAd() را فراخوانی کنید. GMA Next-Gen SDK تبلیغ موجود را بازیابی میکند و بهطور خودکار تبلیغ بعدی را در پسزمینه پیشبارگذاری میکند.
تا زمانی که آماده نمایش تبلیغ نیستید، از فراخوانی این متد خودداری کنید. نگه داشتن تبلیغات در حافظه پنهان به GMA Next-Gen SDK اجازه میدهد تا به طور خودکار تبلیغات منقضی شده را بهروزرسانی کرده و بهینهسازی حافظه پنهان را انجام دهد.
مثال زیر یک تبلیغ از پیش بارگذاری شده را بازیابی و نمایش میدهد:
کاتلین
private fun pollAndShowAd(activity: Activity, adUnitId: String) {
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
ad.show(activity)
}
}
جاوا
private void pollAndShowAd(Activity activity, String adUnitId) {
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
// Interact with the ad object as needed.
if (ad != null) {
Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
بررسی در دسترس بودن تبلیغات پیش بارگذاری شده
برای بررسی در دسترس بودن آگهی، یکی از موارد زیر را انتخاب کنید:
در دسترس بودن تبلیغات از پیش بارگذاری شده را دریافت کنید
مثال زیر، در دسترس بودن تبلیغات را بررسی میکند:
کاتلین
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
جاوا
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
به در دسترس بودن تبلیغات از پیش بارگذاری شده گوش دهید
برای اطلاع از زمان پیشبارگذاری موفقیتآمیز تبلیغات، عدم موفقیت در پیشبارگذاری یا اتمام حافظه پنهان تبلیغات، در رویدادهای پیشبارگذاری ثبتنام کنید.
رویدادهای پیش بارگذاری برای اهداف تحلیلی در نظر گرفته شدهاند. در داخل رویدادهای پیش بارگذاری، فراخوانیهای زیر انجام میشود:
- تابع
startPreload()را فراخوانی نکنید. - از فراخوانی
pollAd()خودداری کنید، مگر اینکه تبلیغ بلافاصله نمایش داده شود.
مثال زیر رویدادهای تبلیغاتی را ثبت میکند:
کاتلین
private fun startPreloadingWithCallback(adUnitId: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
override fun onAdsExhausted(preloadId: String) {
Log.i(TAG, "Interstitial preload ad $preloadId is not available")
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
Log.i(TAG, "Interstitial preload ad $preloadId is available")
}
}
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}
جاوا
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
TAG,
String.format(
"Interstitial preload ad %s failed to load with error: %s",
preloadId, adError.getMessage()));
// [Optional] Get the error response info for additional details.
// ResponseInfo responseInfo = adError.getResponseInfo();
}
@Override
public void onAdsExhausted(String preloadId) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
@Override
public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
}
};
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}
پیش بارگذاری تبلیغات را متوقف کنید
اگر نیازی به نمایش مجدد تبلیغات برای یک شناسهی پیشبارگذاری در جلسه ندارید، میتوانید پیشبارگذاری تبلیغات را متوقف کنید. برای متوقف کردن پیشبارگذاری تبلیغات برای یک شناسهی پیشبارگذاری خاص، تابع destroy() را با شناسهی پیشبارگذاری فراخوانی کنید.
اندازه بافر را تنظیم کنید
اندازه بافر، تعداد تبلیغات از پیش بارگذاری شده در حافظه را کنترل میکند. به طور پیشفرض، گوگل اندازه بافر را بهینه میکند تا مصرف حافظه و تأخیر نمایش تبلیغات را متعادل کند. اگر برنامه شما قبل از بارگذاری تبلیغ بعدی، تبلیغات را نمایش میدهد، میتوانید یک اندازه بافر سفارشی تنظیم کنید تا تعداد تبلیغات نگهداری شده در حافظه را افزایش دهید. ما اندازه بافر را حداکثر چهار توصیه میکنیم.
کاتلین
private fun setBufferSize(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
جاوا
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}