تبلیغات بنری

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

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

تبلیغات بنری تطبیقی ​​لنگر، تبلیغات با نسبت ابعاد ثابت هستند تا تبلیغات با اندازه ثابت معمولی. نسبت تصویر مشابه استاندارد صنعتی 320x50 است. هنگامی که عرض کامل موجود را مشخص کردید، تبلیغی با ارتفاع بهینه برای آن عرض به شما برمی‌گرداند. ارتفاع بهینه در درخواست‌های یک دستگاه تغییر نمی‌کند، و نماهای اطراف نیازی به جابجایی در هنگام بازخوانی آگهی ندارند.

پیش نیازها

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

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

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

/21775744923/example/adaptive-banner

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

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

AdManagerAdView را به طرح اضافه کنید

شما با تعیین اندازه تبلیغ یک بنر ایجاد می کنید. مراحل زیر را کامل کنید:

  1. اندازه آگهی تطبیقی ​​لنگردار با عرض کامل ایجاد کنید:

    جاوا

    // Get the ad size with screen width.
    public AdSize getAdSize() {
      DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
      int adWidthPixels = displayMetrics.widthPixels;
    
      if (VERSION.SDK_INT >= VERSION_CODES.R) {
        WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics();
        adWidthPixels = windowMetrics.getBounds().width();
      }
    
      float density = displayMetrics.density;
      int adWidth = (int) (adWidthPixels / density);
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
    }
    

    کاتلین

    // Get the ad size with screen width.
    private val adSize: AdSize
      get() {
        val displayMetrics = resources.displayMetrics
        val adWidthPixels =
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics
            windowMetrics.bounds.width()
          } else {
            displayMetrics.widthPixels
          }
        val density = displayMetrics.density
        val adWidth = (adWidthPixels / density).toInt()
        return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
      }
    
    
  2. یک AdManagerAdView با استفاده از اندازه تبلیغ ایجاد کنید و آن را به طرح‌بندی برنامه خود اضافه کنید:

    جاوا

    // Create a new ad view.
    adView = new AdManagerAdView(this);
    adView.setAdUnitId(AD_UNIT);
    adView.setAdSize(getAdSize());
    
    // 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
    adView.setAdSize(adSize)
    this.adView = adView
    
    // Replace ad container with new ad view.
    binding.adViewContainer.removeAllViews()
    binding.adViewContainer.addView(adView)
    

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

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

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

جاوا

// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

کاتلین

// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

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

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

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

رویدادهای تبلیغاتی

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

جاوا

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(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 ارسال کنید. برای انجام این کار، قبل از بارگیری آگهی، AdManagerAdRequest برای نمایش‌های دستی فعال کنید:

جاوا

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

کاتلین

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

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

جاوا

{ ad_view }.recordManualImpression();

کاتلین

AdManagerAdView.recordManualImpression()

رویدادهای برنامه

رویدادهای برنامه به شما امکان می‌دهند تبلیغاتی ایجاد کنید که می‌توانند به کد برنامه‌شان پیام ارسال کنند. سپس برنامه می تواند بر اساس این پیام ها اقداماتی را انجام دهد.

می‌توانید با استفاده از AppEventListener به رویدادهای برنامه خاص Ad Manager گوش دهید. این رویدادها می توانند در هر زمانی در طول چرخه حیات تبلیغ، حتی قبل از فراخوانی onAdLoaded() رخ دهند.

جاوا

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

کاتلین

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) زمانی فراخوانی می شود که یک رویداد برنامه در یک تبلیغ رخ دهد. این رابط را می توان توسط اکتیویتی یا هر شی دیگری پیاده سازی کرد:

جاوا

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

کاتلین

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

و سپس به AdManagerAdView منتقل شد:

جاوا

AdManagerAdView.setAppEventListener(this);

کاتلین

AdManagerAdView.appEventListener = this

در اینجا یک مثال نشان می دهد که چگونه رنگ پس زمینه برنامه خود را بسته به یک رویداد برنامه با نام رنگ تغییر دهید:

جاوا

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

کاتلین

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 مراجعه کنید.

جاوا کاتلین

منابع اضافی

نمونه هایی در GitHub

مراحل بعدی

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

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

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

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

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