تبلیغات بنری

پلتفرم را انتخاب کنید: Android iOS Unity Flutter

تبلیغات بنری، تبلیغات مستطیلی هستند که بخشی از طرح‌بندی برنامه را اشغال می‌کنند. بنرهای تطبیقی لنگر، تبلیغاتی با نسبت ابعاد ثابت هستند که در حالی که کاربران در حال تعامل با برنامه هستند، روی صفحه می مانند، چه در بالا یا پایین صفحه نمایش لنگر انداخته شوند.

این راهنما بارگذاری یک بنر تبلیغاتی تطبیقی را در یک برنامه اندرویدی پوشش می‌دهد.

پیش نیازها

همیشه با تبلیغات آزمایشی تست کنید

هنگام ساخت و آزمایش برنامه های خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می کنید. عدم انجام این کار می تواند منجر به تعلیق حساب شما شود.

ساده ترین راه برای بارگیری تبلیغات آزمایشی استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای بنرهای اندروید است:

/21775744923/example/adaptive-banner

این به طور ویژه پیکربندی شده است تا تبلیغات آزمایشی را برای هر درخواست بازگرداند، و می‌توانید هنگام کدنویسی، آزمایش و اشکال‌زدایی از آن در برنامه‌های خود استفاده کنید. فقط مطمئن شوید که قبل از انتشار برنامه خود، آن را با شناسه واحد تبلیغاتی خود جایگزین کنید.

برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK Ads Google Mobile، به فعال کردن تبلیغات آزمایشی مراجعه کنید.

نمای تبلیغ را تعریف کنید

طرح بندی 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" />

Jetpack Compose

  1. ماژول JetpackComposeDemo/compose-util را شامل کنید. این ماژول شامل کمک کننده هایی برای نوشتن شی AdView و دارایی است.

  2. یک کلاس BannerAd از ماژول compose-util بنویسید:


// 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 an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(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 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)

Jetpack Compose


val adView = remember { AdManagerAdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANANGER_ADAPTIVE_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()) { AdManagerBannerAd(adView, modifier) }
}

یک تبلیغ را بارگیری کنید

هنگامی که AdManagerAdView در جای خود قرار گرفت، گام بعدی بارگذاری آگهی است. این کار با متد loadAd() در کلاس AdManagerAdView انجام می شود. این یک پارامتر AdManagerAdRequest را می‌گیرد که اطلاعات زمان اجرا، مانند اطلاعات هدف‌گیری، را در مورد یک درخواست آگهی نگه می‌دارد.

در اینجا مثالی آورده شده است که نحوه بارگذاری آگهی را نشان می دهد:

جاوا

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

کاتلین

val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

در صورت موفقیت آمیز بودن، برنامه شما آماده نمایش تبلیغات بنری است.

یک آگهی را تازه کنید

اگر واحد تبلیغات خود را برای بازخوانی پیکربندی کرده‌اید، نیازی به درخواست آگهی دیگری در صورت عدم بارگیری آگهی ندارید. Google Mobile Ads SDK به نرخ تازه‌سازی که در رابط کاربری Ad Manager مشخص کرده‌اید احترام می‌گذارد. اگر بازخوانی را فعال نکرده‌اید، درخواست جدیدی صادر کنید. برای جزئیات بیشتر در مورد بازخوانی واحد تبلیغات، مانند تنظیم نرخ تازه‌سازی، به نرخ تازه‌سازی برای تبلیغات در برنامه‌های تلفن همراه مراجعه کنید.

یک منبع تبلیغاتی منتشر کنید

پس از اتمام استفاده از بنر تبلیغاتی، می توانید منابع تبلیغات بنری را آزاد کنید.

برای انتشار منبع تبلیغ، تبلیغ را از سلسله مراتب مشاهده حذف می‌کنید و همه مراجع آن را حذف می‌کنید:

جاوا

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.
    }
  }

هر یک از روش های قابل جبران در AdListener مربوط به یک رویداد در چرخه حیات یک تبلیغ است.

روش های قابل غلبه
onAdClicked() متد onAdClicked() زمانی فراخوانی می شود که کلیکی برای یک تبلیغ ثبت شود.
onAdClosed() متد onAdClosed() زمانی فراخوانی می شود که کاربر پس از مشاهده URL مقصد تبلیغ به برنامه بازگردد. برنامه شما می‌تواند از آن برای از سرگیری فعالیت‌های معلق یا انجام هر کار دیگری که برای آماده‌سازی خود برای تعامل لازم است استفاده کند.
onAdFailedToLoad() متد onAdFailedToLoad() تنها روشی است که شامل یک پارامتر است. پارامتر خطا از نوع 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 قاچاق می‌شوند سازگار است. این نباید برای پر کردن پشتی یا تبلیغات شبکه های شخص ثالث استفاده شود. برای جزئیات بیشتر، به شمارش برداشت‌ها و کلیک‌ها مراجعه کنید.

اگر شرایط خاصی برای زمان ثبت یک نمایش دارید، می‌توانید به صورت دستی پینگ‌های نمایش را به 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>

به مثال Ad Manager App Events برای اجرای رویدادهای برنامه در برنامه آزمایشی API مراجعه کنید.

Java Kotlin JetpackCompose

مراحل بعدی

بنرهای جمع شونده

بنرهای جمع‌شونده، بنری‌هایی هستند که در ابتدا به صورت یک پوشش بزرگ‌تر ارائه می‌شوند و دکمه‌ای برای جمع کردن آگهی به اندازه کوچک‌تر وجود دارد. استفاده از آن را برای بهینه سازی بیشتر عملکرد خود در نظر بگیرید. برای جزئیات بیشتر به بنرهای تاشو مراجعه کنید.

بنرهای تطبیقی درون خطی

بنرهای تطبیقی درون خطی در مقایسه با بنرهای تطبیقی لنگردار، بنرهای بزرگتر و بلندتری هستند. ارتفاع آنها متغیر است و می توانند به اندازه صفحه نمایش دستگاه باشند. بنرهای تطبیقی درون خطی برای برنامه‌هایی که آگهی‌های بنر را در محتوای قابل پیمایش قرار می‌دهند، بیش از بنرهای تطبیقی لنگردار توصیه می‌شوند. برای جزئیات بیشتر به بنرهای تطبیقی درون خطی مراجعه کنید.

موضوعات دیگر را بررسی کنید