این راهنما نحوه بارگذاری یک بنر تبلیغاتی تطبیقی متصل به یک برنامه اندروید را پوشش میدهد.
پیشنیازها
- راهنمای شروع به کار را تکمیل کنید.
- اختیاری: برای مثالی از پیادهسازی تبلیغات بنری، یکی از برنامههای نمونه زیر را انتخاب کنید:
- مثالی از بنرهای تبلیغاتی تطبیقی متصل به جاوا ، کاتلین یا جتپک کامپوز .
- نسخه آزمایشی ویژگیهای پیشرفته جاوا یا کاتلین .
همیشه با تبلیغات آزمایشی تست کنید
هنگام ساخت و آزمایش برنامههای خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده میکنید. عدم انجام این کار میتواند منجر به مسدود شدن حساب شما شود.
سادهترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه اختصاصی واحد تبلیغات آزمایشی ما برای بنرهای اندروید است:
ca-app-pub-3940256099942544/9214589741
این ابزار به طور ویژه برای برگرداندن تبلیغات آزمایشی برای هر درخواست پیکربندی شده است و میتوانید از آن در برنامههای خود هنگام کدنویسی، آزمایش و اشکالزدایی استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین میکنید.
برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK تبلیغات موبایلی گوگل، به بخش فعال کردن تبلیغات آزمایشی مراجعه کنید.
نمای تبلیغ را تعریف کنید
طرحبندی XML
یک نما به فایل XML طرحبندی خود اضافه کنید تا به عنوان ظرفی برای بنر تبلیغاتی تطبیقی متصل شما عمل کند:
<!-- Ad view container that fills the width of the screen and adjusts its
height to the content of the ad. -->
<FrameLayout
android:id="@+id/ad_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true" />
جتپک آهنگسازی
ماژول JetpackComposeDemo/compose-util را اضافه کنید. این ماژول شامل کمککنندههایی برای نوشتن شیء و فایلهای
AdViewاست.یک کلاس
BannerAdاز ماژولcompose-utilبسازید:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
اندازه تبلیغ را تنظیم کنید
AdSize روی یک نوع بنر تطبیقی متصل با عرض مشخص تنظیم کنید:
جاوا
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
کاتلین
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
جتپک آهنگسازی
// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
اضافه کردن AdView به طرحبندی
با استفاده از اندازه تبلیغ، یک AdView ایجاد کنید تا به طرحبندی برنامهتان اضافه شود:
جاوا
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
کاتلین
// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView
// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)
جتپک آهنگسازی
val adView = remember { AdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID
// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
بارگذاری یک تبلیغ
پس از نصب AdView ، مرحله بعدی بارگذاری یک تبلیغ است. این کار با متد loadAd() در کلاس AdView انجام میشود. این متد یک پارامتر AdRequest میگیرد که اطلاعات زمان اجرا، مانند اطلاعات هدفگیری، در مورد یک درخواست تبلیغ واحد را در خود نگه میدارد.
در اینجا مثالی آورده شده است که نحوه بارگذاری یک تبلیغ را نشان میدهد:
جاوا
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
کاتلین
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
در صورت موفقیت، برنامه شما آماده نمایش تبلیغات بنری است.
تازه کردن یک آگهی
اگر واحد تبلیغاتی خود را برای بهروزرسانی پیکربندی کردهاید، در صورت عدم بارگذاری تبلیغ، نیازی به درخواست تبلیغ دیگری ندارید. SDK تبلیغات موبایل گوگل هر نرخ بهروزرسانی را که در رابط کاربری AdMob مشخص کردهاید، در نظر میگیرد. اگر بهروزرسانی را فعال نکردهاید، یک درخواست جدید ارسال کنید. برای جزئیات بیشتر در مورد بهروزرسانی واحد تبلیغاتی، مانند تنظیم نرخ بهروزرسانی، به بخش «استفاده از بهروزرسانی خودکار برای تبلیغات بنری» مراجعه کنید.
انتشار یک منبع تبلیغاتی
وقتی استفاده از بنر تبلیغاتی تمام شد، میتوانید منابع بنر تبلیغاتی را آزاد کنید.
برای آزادسازی منبع تبلیغ، تبلیغ را از سلسله مراتب نما حذف کرده و تمام ارجاعات آن را حذف میکنید:
جاوا
public void destroyBanner() {
// Remove banner from view hierarchy.
if (adView != null) {
View parentView = (View) adView.getParent();
if (parentView instanceof ViewGroup) {
((ViewGroup) parentView).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
}
// Drop reference to the banner ad.
adView = null;
}
کاتلین
fun destroyBanner() {
// Remove banner from view hierarchy.
val parentView = adView?.parent
if (parentView is ViewGroup) {
parentView.removeView(adView)
}
// Destroy the banner ad resources.
adView?.destroy()
// Drop reference to the banner ad.
adView = null
}
رویدادهای تبلیغاتی
شما میتوانید به تعدادی از رویدادها در چرخه عمر تبلیغ، از جمله بارگذاری، نمایش تبلیغ و کلیک، و همچنین رویدادهای باز و بسته شدن تبلیغ، گوش دهید. توصیه میشود قبل از بارگذاری بنر، فراخوانی را تنظیم کنید.جاوا
if (adView != null) {
adView.setAdListener(
new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
}
کاتلین
adView?.adListener =
object : AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
هر یک از متدهای overridable در AdListener مربوط به یک رویداد در چرخه حیات یک تبلیغ است.
| متدهای قابل لغو | |
|---|---|
onAdClicked() | متد onAdClicked() زمانی فراخوانی میشود که یک کلیک برای یک تبلیغ ثبت شود. |
onAdClosed() | متد onAdClosed() زمانی فراخوانی میشود که کاربر پس از مشاهدهی آدرس اینترنتی مقصد تبلیغ، به برنامه بازگردد. برنامهی شما میتواند از آن برای از سرگیری فعالیتهای معلق شده یا انجام هر کار دیگری که برای آمادهسازی خود برای تعامل لازم است، استفاده کند. برای پیادهسازی متدهای شنوندهی تبلیغ در برنامهی Android API Demo به مثال AdMob AdListener مراجعه کنید. |
onAdFailedToLoad() | متد onAdFailedToLoad() تنها متدی است که شامل یک پارامتر میشود. پارامتر error از نوع LoadAdError خطای رخ داده را توصیف میکند. برای اطلاعات بیشتر، به مستندات اشکالزدایی خطاهای بارگذاری تبلیغات مراجعه کنید. |
onAdImpression() | متد onAdImpression() زمانی فراخوانی میشود که برای یک تبلیغ، بازدید ثبت شود. |
onAdLoaded() | متد onAdLoaded() زمانی اجرا میشود که بارگذاری یک تبلیغ به پایان رسیده باشد. برای مثال، اگر میخواهید اضافه کردن AdView به activity یا fragment خود را تا زمانی که از بارگذاری یک تبلیغ مطمئن شوید، به تأخیر بیندازید، میتوانید این کار را اینجا انجام دهید. |
onAdOpened() | متد onAdOpened() زمانی فراخوانی میشود که یک تبلیغ، لایهای را باز کند که صفحه نمایش را بپوشاند. |
شتاب سختافزاری برای تبلیغات ویدیویی
برای اینکه تبلیغات ویدیویی با موفقیت در نمایش بنرهای تبلیغاتی شما نمایش داده شوند، باید شتابدهنده سختافزاری فعال باشد.
شتاب سختافزاری به طور پیشفرض فعال است، اما برخی از برنامهها ممکن است آن را غیرفعال کنند. اگر این مورد در مورد برنامه شما صدق میکند، توصیه میکنیم شتاب سختافزاری را برای کلاسهای Activity که از تبلیغات استفاده میکنند، فعال کنید.
فعال کردن شتاب سختافزاری
اگر برنامه شما با فعال بودن شتاب سختافزاری به صورت سراسری به درستی رفتار نمیکند، میتوانید آن را برای فعالیتهای منفرد نیز کنترل کنید. برای فعال یا غیرفعال کردن شتاب سختافزاری، میتوانید از ویژگی android:hardwareAccelerated برای عناصر <application> و <activity> در AndroidManifest.xml خود استفاده کنید. مثال زیر شتاب سختافزاری را برای کل برنامه فعال میکند اما آن را برای یک فعالیت غیرفعال میکند:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
برای اطلاعات بیشتر در مورد گزینههای کنترل شتاب سختافزاری، به راهنمای شتاب سختافزاری مراجعه کنید. توجه داشته باشید که اگر فعالیت غیرفعال باشد، نمایش تبلیغات به صورت جداگانه برای شتاب سختافزاری قابل فعال شدن نیست، بنابراین خود فعالیت باید شتاب سختافزاری را فعال کند.
مراحل بعدی
بنرهای تاشو
بنرهای تبلیغاتی تاشو، بنرهایی هستند که در ابتدا به صورت یک لایه بزرگتر ارائه میشوند و دکمهای برای جمع کردن تبلیغ به اندازه کوچکتر وجود دارد. برای بهینهسازی بیشتر عملکرد خود، استفاده از آن را در نظر بگیرید. برای جزئیات بیشتر به بنرهای تبلیغاتی تاشو مراجعه کنید.
بنرهای تطبیقی درون خطی
بنرهای تطبیقی درون خطی در مقایسه با بنرهای تطبیقی لنگری، بنرهای بزرگتر و بلندتری هستند. ارتفاع آنها متغیر است و میتوانند به اندازه صفحه نمایش دستگاه باشند. بنرهای تطبیقی درون خطی برای برنامههایی که تبلیغات بنری را در محتوای قابل پیمایش قرار میدهند، نسبت به بنرهای تطبیقی لنگری توصیه میشوند. برای جزئیات بیشتر به بنرهای تطبیقی درون خطی مراجعه کنید.