تبلیغات بینابینی، تبلیغات تمام صفحهای هستند که رابط کاربری برنامه را پوشش میدهند. شما این تبلیغات را در نقاط انتقال طبیعی در برنامه خود، مانند بین فعالیتها یا در طول مکث در مراحل بازی، نمایش میدهید.
وقتی برنامه شما یک تبلیغ بینابینی نشان میدهد، کاربران شما میتوانند روی تبلیغ ضربه بزنند و ادامه دهند، یا تبلیغ را ببندند و به برنامه برگردند. یکی از مطالعات موردی ما را بخوانید.
این راهنما نحوه ادغام تبلیغات بینابینی در یک برنامه اندروید را توضیح میدهد.
قبل از اینکه شروع کنی
قبل از ادامه، موارد زیر را انجام دهید:
- GMA Next-Gen SDK را راهاندازی کنید .
- از شناسه واحد تبلیغات بینابینی آزمایشی
ca-app-pub-3940256099942544/1033173712استفاده کنید.- هنگام ساخت و آزمایش برنامه خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده میکنید. اگر از شناسه واحد تبلیغات آزمایشی استفاده نکنید، گوگل میتواند حساب شما را مسدود کند.
- قبل از انتشار برنامه، این شناسه را با شناسه واحد تبلیغاتی خود جایگزین کنید.
- برای جزئیات بیشتر در مورد تبلیغات آزمایشی GMA Next-Gen SDK ، به فعال کردن تبلیغات آزمایشی مراجعه کنید.
پیش بارگذاری تبلیغات را درک کنید
پیشبارگذاری تبلیغات در GMA Next-Gen SDK بارگذاری و ذخیرهسازی تبلیغات را خودکار میکند.
پیش بارگذاری تبلیغات مزایای زیر را ارائه میدهد:
- مدیریت منابع : منابع را تا زمان نمایش تبلیغات حفظ میکند.
- بارگذاری مجدد خودکار : وقتی تبلیغی از حافظه پنهان بازیابی میشود، تبلیغ جدیدی بارگذاری میشود.
- تلاشهای مجدد مدیریتشده : وقتی تبلیغی بارگذاری نمیشود، تبلیغ جدیدی بارگذاری میشود.
- مدیریت انقضا : تبلیغات را قبل از انقضا بهروزرسانی میکند.
- بهینهسازی حافظه پنهان : ترتیب حافظه پنهان را برای نمایش تبلیغ با بالاترین اولویت بهینه میکند.
شروع پیش بارگذاری تبلیغات
برای شروع پیشبارگذاری تبلیغات، متد startPreload() را یک بار در شروع برنامه فراخوانی کنید. پس از فراخوانی متد startPreload() ، GMA Next-Gen SDK به طور خودکار تبلیغات را پیشبارگذاری میکند و درخواستهای ناموفق برای پیکربندیهای از پیش بارگذاری شده را دوباره امتحان میکند.
مثال زیر نحوه شروع پیش بارگذاری تبلیغات را نشان میدهد:
کاتلین
جاوا
AD_UNIT_ID با شناسه واحد تبلیغاتی خود جایگزین کنید.
مثال قبلی نحوه استفاده از شناسه واحد تبلیغاتی به عنوان شناسه پیشبارگذاری را نشان میدهد. شناسه پیشبارگذاری یک شناسه رشتهای است که شما برای شناسایی پیکربندی پیشبارگذاری تبلیغات ایجاد میکنید. اگر برنامه شما به چندین پیکربندی هدفگیری برای یک شناسه واحد تبلیغاتی نیاز دارد، یک شناسه رشتهای سفارشی ارسال کنید.
دریافت و نمایش تبلیغ از پیش بارگذاری شده
وقتی میخواهید یک تبلیغ نمایش دهید، متد pollAd() را فراخوانی کنید. GMA Next-Gen SDK یک تبلیغ موجود را بازیابی میکند و به طور خودکار تبلیغ بعدی را در پسزمینه بارگذاری اولیه میکند. اگر هیچ تبلیغی موجود نباشد، GMA Next-Gen SDK هیچ تبلیغی را برنمیگرداند.
وقتی یک شیء تبلیغ (ad object) در دسترس دارید، متد show را برای نمایش تبلیغ فراخوانی کنید. مثال زیر نحوه بازیابی و نمایش یک تبلیغ از پیش بارگذاری شده را نشان میدهد:
کاتلین
جاوا
تا زمانی که آماده نمایش تبلیغ نیستید، از فراخوانی متد pollAd() خودداری کنید. برای خواندن اطلاعات پاسخ تبلیغ بدون نمایش آن، به بخش «خواندن اطلاعات پاسخ» مراجعه کنید.
به رویدادهای تبلیغاتی گوش دهید
قبل از نمایش تبلیغ، به رویدادهای تبلیغ گوش دهید. مثال زیر نحوه ثبت فراخوانیها برای رویدادهای تبلیغ را نشان میدهد:
کاتلین
// Listen for ad events. val ad = interstitialAd if (ad == null) { Log.e(TAG, "Interstitial ad is not ready yet.") return } ad.adEventCallback = object : InterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Interstitial ad did record an impression. } override fun onAdClicked() { // Interstitial ad did record a click. } }
جاوا
// Listen for ad events. if (interstitialAd == null) { Log.e(TAG, "Interstitial ad is not ready yet."); return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Interstitial ad did record an impression. } @Override public void onAdClicked() { // Interstitial ad did record a click. } });
اختیاری: به رویدادهای پیشبارگذاری گوش دهید
وقتی شروع به پیشبارگذاری تبلیغات میکنید، برای رویدادهای پیشبارگذاری ثبتنام کنید تا در صورت موفقیتآمیز بودن پیشبارگذاری تبلیغات، عدم موفقیت در پیشبارگذاری یا اتمام حافظه پنهان تبلیغات، مطلع شوید.
مثال زیر نحوه ثبت نام برای پیش بارگذاری رویدادهای تبلیغاتی را نشان میدهد:
کاتلین
val preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d( TAG, ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"), ) } 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)
جاوا
PreloadCallback preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( 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(@NonNull 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(@NonNull String preloadId, @NonNull 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);
وقتی یک تبلیغ بارگذاری نمیشود، GMA Next-Gen SDK بهطور خودکار تبلیغات را از قبل بارگذاری میکند و درخواستهای ناموفق برای پیکربندیهای از پیش بارگذاریشده را دوباره امتحان میکند.
اختیاری: بررسی در دسترس بودن تبلیغات
اگر میخواهید بدانید که آیا یک تبلیغ در دسترس است یا خیر، در دسترس بودن آن را بررسی کنید. مثال زیر نحوه بررسی در دسترس بودن یک تبلیغ از پیش بارگذاری شده را نشان میدهد:
کاتلین
private fun isAdAvailable(adUnitId: String): Boolean { return InterstitialAdPreloader.isAdAvailable(adUnitId) }
جاوا
private boolean isAdAvailable(String adUnitId) { return InterstitialAdPreloader.isAdAvailable(adUnitId); }
اختیاری: اندازه بافر را تنظیم کنید
اندازه بافر، تعداد تبلیغات از پیش بارگذاری شده در حافظه را کنترل میکند. به طور پیشفرض، گوگل اندازه بافر را برای ایجاد تعادل در مصرف حافظه و تأخیر نمایش تبلیغات بهینه میکند. میتوانید یک اندازه بافر سفارشی برای افزایش تعداد تبلیغات نگهداری شده در حافظه تنظیم کنید. ما حداکثر اندازه بافر چهار را توصیه میکنیم.
مثال زیر نحوه تنظیم اندازه بافر برای چهار تبلیغ از پیش بارگذاری شده را نشان میدهد:
کاتلین
val adRequest = AdRequest.Builder(adUnitId).build() // Maintain small or default buffer size unless rapid transitions are expected. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) InterstitialAdPreloader.start(adUnitId, preloadConfig)
جاوا
// Maintain small or default buffer size unless rapid transitions are expected. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); InterstitialAdPreloader.start(adUnitId, preloadConfig);
محدودیتهای پیشبارگذاری حافظه پنهان
GMA Next-Gen SDK محدودیتی را در کل برنامه بر تعداد کل تبلیغات از پیش بارگذاری شده در تمام واحدهای تبلیغاتی و شناسههای از پیش بارگذاری شده اعمال میکند:
- محدودیت پیشفرض: گوگل حداکثر ۶ تبلیغ از پیش بارگذاریشده را در حافظه نگه میدارد. این محدودیت در تمام قالبها و شناسههای از پیش بارگذاریشده مشترک است.
- توصیه میکنیم برای هر شناسه پیشبارگذاری، اندازه بافر را ۲ یا ۳ نگه دارید.
اختیاری: توقف پیشبارگذاری تبلیغات
اگر نیازی به نمایش مجدد تبلیغات برای یک شناسه پیشبارگذاری خاص در جلسه ندارید، میتوانید پیشبارگذاری تبلیغات را متوقف کنید. برای متوقف کردن بارگذاری تبلیغات برای یک شناسه پیشبارگذاری خاص، متد destroy() را با یک شناسه پیشبارگذاری فراخوانی کنید. فراخوانی متد destroy() تمام تبلیغات پیشبارگذاری شده مرتبط با شناسه پیشبارگذاری را از حافظه پنهان حذف میکند.
مثال زیر نحوهی متوقف کردن پیشبارگذاری تبلیغات را نشان میدهد:
کاتلین
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId) }
جاوا
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId); }
اختیاری: اطلاعات پاسخ را بخوانید
اطلاعات پاسخ تبلیغ از پیش بارگذاری شده بعدی را بدون حذف تبلیغ از حافظه پنهان بخوانید.
مثال زیر نحوه خواندن اطلاعات پاسخ تبلیغ از پیش بارگذاری شده بعدی را نشان میدهد:
کاتلین
val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
جاوا
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());