این راهنما نحوه بارگذاری یک بنر تبلیغاتی تطبیقی متصل به یک برنامه اندروید را پوشش میدهد.
پیشنیازها
- کیت توسعه Google Mobile Ads SDK را راهاندازی کنید .
- اختیاری: برای مثالی از پیادهسازی تبلیغات بنری، یکی از برنامههای نمونه زیر را انتخاب کنید:
- مثالی از بنرهای تبلیغاتی تطبیقی متصل به جاوا ، کاتلین یا جتپک کامپوز .
- نسخه آزمایشی ویژگیهای پیشرفته جاوا یا کاتلین .
همیشه با تبلیغات آزمایشی تست کنید
هنگام ساخت و آزمایش برنامههای خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده میکنید. عدم انجام این کار میتواند منجر به مسدود شدن حساب شما شود.
سادهترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه اختصاصی واحد تبلیغات آزمایشی ما برای بنرهای اندروید است:
/21775744923/example/adaptive-banner
این ابزار به طور ویژه برای برگرداندن تبلیغات آزمایشی برای هر درخواست پیکربندی شده است و میتوانید از آن در برنامههای خود هنگام کدنویسی، آزمایش و اشکالزدایی استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین میکنید.
برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی Google Mobile Ads 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" />
جتپک آهنگسازی
پوشه JetpackCompose Utilities را اضافه کنید. این پوشه شامل کمککنندههایی برای ترکیب شیء
AdViewو فایلهای آن است.یک
AdViewبسازید:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}
اندازه تبلیغ را تنظیم کنید
AdSize روی یک نوع بنر تطبیقی متصل با عرض مشخص تنظیم کنید:
جاوا
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
کاتلین
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
جتپک آهنگسازی
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
AdManagerAdView را به طرح اضافه کنید
با استفاده از اندازه تبلیغ، یک AdManagerAdView ایجاد کنید تا به طرحبندی برنامهتان اضافه شود:
جاوا
// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// 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 = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView
// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)
جتپک آهنگسازی
val adView = remember { AdManagerAdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(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()) { AdManagerBannerAd(adView, modifier) }
}
بارگذاری یک تبلیغ
مثال زیر یک بنر تبلیغاتی تطبیقی با عرض ۳۶۰ را در یک شیء AdManagerAdView بارگذاری میکند:
جاوا
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
کاتلین
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)
تازه کردن یک آگهی
If you configured your ad unit to refresh, you don't need to request another ad when the ad fails to load. Google Mobile Ads SDK respects any refresh rate you specified in the Ad Manager UI. If you haven't enabled refresh, issue a new request. For more details on ad unit refresh, such as setting a refresh rate, see Refresh rate for ads in mobile apps .
انتشار یک منبع تبلیغاتی
وقتی استفاده از بنر تبلیغاتی تمام شد، میتوانید منابع بنر تبلیغاتی را آزاد کنید.
برای آزادسازی منبع تبلیغ، تبلیغ را از سلسله مراتب نما حذف کرده و تمام ارجاعات آن را حذف میکنید:
جاوا
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() زمانی فراخوانی میشود که کاربر پس از مشاهدهی آدرس اینترنتی (URL) مقصد تبلیغ، به برنامه بازگردد. برنامهی شما میتواند از آن برای از سرگیری فعالیتهای معلق شده یا انجام هر کار دیگری که برای آمادهسازی خود برای تعامل لازم است، استفاده کند. |
onAdFailedToLoad() | متد onAdFailedToLoad() تنها متدی است که شامل یک پارامتر میشود. پارامتر error از نوع LoadAdError خطای رخ داده را توصیف میکند. برای اطلاعات بیشتر، به مستندات اشکالزدایی خطاهای بارگذاری تبلیغات مراجعه کنید. |
onAdImpression() | متد onAdImpression() زمانی فراخوانی میشود که برای یک تبلیغ، بازدید ثبت شود. |
onAdLoaded() | متد onAdLoaded() زمانی اجرا میشود که بارگذاری یک تبلیغ به پایان رسیده باشد. برای مثال، اگر میخواهید اضافه کردن AdManagerAdView به اکتیویتی یا فرگمنت خود را تا زمانی که از بارگذاری یک تبلیغ مطمئن شوید، به تأخیر بیندازید، میتوانید این کار را اینجا انجام دهید. |
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>
برای اطلاعات بیشتر در مورد گزینههای کنترل شتاب سختافزاری، به راهنمای شتاب سختافزاری مراجعه کنید. توجه داشته باشید که اگر فعالیت غیرفعال باشد، نمایش تبلیغات به صورت جداگانه برای شتاب سختافزاری قابل فعال شدن نیست، بنابراین خود فعالیت باید شتاب سختافزاری را فعال کند.
شمارش دستی برداشت
شمارش دستی تعداد نمایشها فقط با کمپینهای فروش مستقیم و خانگی که در آنها آگهیهای تبلیغاتی مستقیماً در Ad Manager منتشر میشوند، سازگار است. نباید از آن برای تبلیغات اضافی یا شبکههای شخص ثالث استفاده شود. برای جزئیات بیشتر، به بخش شمارش نمایشها و کلیکها مراجعه کنید.
اگر شرایط خاصی برای ثبت نمایش دارید، میتوانید پینگهای نمایش را به صورت دستی به مدیر تبلیغات ارسال کنید:
جاوا
if (adManagerAdView != null) {
adManagerAdView.setManualImpressionsEnabled(true);
}
کاتلین
adManagerAdView?.setManualImpressionsEnabled(true)
وقتی متوجه شدید که یک تبلیغ با موفقیت برگردانده شده و روی صفحه نمایش است، میتوانید به صورت دستی یک نمایش ثبت کنید:
جاوا
if (adManagerAdView != null) {
adManagerAdView.recordManualImpression();
}
کاتلین
adManagerAdView?.recordManualImpression()
رویدادهای برنامه
رویدادهای برنامه به شما امکان میدهند تبلیغاتی ایجاد کنید که بتوانند پیامهایی را به کد برنامه خود ارسال کنند. سپس برنامه میتواند بر اساس این پیامها اقداماتی انجام دهد.
شما میتوانید با استفاده از AppEventListener به رویدادهای خاص برنامهی Ad Manager گوش دهید. این رویدادها میتوانند در هر زمانی در طول چرخهی حیات تبلیغ، حتی قبل از فراخوانی onAdLoaded() رخ دهند.
AppEventListener را روی AdManagerAdView خود تنظیم کنید:
جاوا
if (adManagerAdView != null) {
adManagerAdView.setAppEventListener(this);
}
کاتلین
adManagerAdView?.appEventListener = this
در اینجا مثالی آورده شده است که نشان میدهد چگونه رنگ پسزمینه برنامه خود را بسته به یک رویداد برنامه با نام رنگ تغییر دهید:
جاوا
@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
if (name.equals("color")) {
switch (info) {
case "green":
// Set background color to green.
break;
case "blue":
// Set background color to blue.
break;
default:
// Set background color to black.
break;
}
}
}
کاتلین
override fun onAppEvent(name: String, info: String) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
و، در اینجا کد خلاقانهی مربوطه را مشاهده میکنید که پیامهای رویداد برنامهی رنگی را به شنونده ارسال میکند:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
برای پیادهسازی رویدادهای برنامه در برنامه API Demo، به مثال رویدادهای برنامه مدیریت تبلیغات مراجعه کنید.
مراحل بعدی
بنرهای تاشو
Collapsible banner ads are banner ads that are initially presented as a larger overlay, with a button to collapse the ad to a smaller size. Consider using it to further optimize your performance. See collapsible banner ads for more details.
بنرهای تطبیقی درون خطی
Inline adaptive banners are larger, taller banners compared to anchored adaptive banners. They are of variable height, and can be as tall as the device screen. Inline adaptive banners are recommended over anchored adaptive banner ads for apps that place banner ads in scrollable content. See inline adaptive banners for more details.