बैनर विज्ञापन

बैनर विज्ञापन, रेक्टैंगल होते हैं. ये ऐप्लिकेशन के लेआउट का कुछ हिस्सा घेरते हैं. जब उपयोगकर्ता आपके ऐप्लिकेशन के साथ इंटरैक्ट करते हैं, तब स्क्रीन पर सबसे ऊपर या सबसे नीचे बैनर विज्ञापन दिखते रहते हैं. इसी तरह स्क्रीन पर स्क्रोल करने के दौरान भी ये विज्ञापन इनलाइन होकर दिखते रहते हैं. बैनर विज्ञापन, तय समय के बाद अपने-आप रीफ़्रेश हो सकते हैं. ज़्यादा जानकारी के लिए, बैनर विज्ञापनों के बारे में खास जानकारी देखें.

इस गाइड में, ऐंकर वाले अडैप्टिव बैनर विज्ञापनोंको इस्तेमाल करने का तरीका बताया गया है. ये विज्ञापन की चौड़ाई को तय करके, हर डिवाइस के लिए विज्ञापन के साइज़ को ऑप्टिमाइज़ करते हैं. इससे परफ़ॉर्मेंस बेहतर होती है.

ऐंकर किए गए अडैप्टिव बैनर विज्ञापन, सामान्य साइज़ वाले विज्ञापनों के बजाय, तय आसपेक्ट रेशियो वाले विज्ञापन होते हैं. आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 320x50 इंडस्ट्री स्टैंडर्ड के समान है. उपलब्ध पूरी चौड़ाई सेट करने के बाद, यह आपको उस चौड़ाई के लिए सबसे सही ऊंचाई वाला विज्ञापन दिखाएगा. एक ही डिवाइस से किए गए अनुरोधों के हिसाब से, इतनी ऊंचाई नहीं बदलती. साथ ही, विज्ञापन को रीफ़्रेश करते समय आस-पास के व्यू की ज़रूरत नहीं होती.

ज़रूरी शर्तें

हमेशा टेस्ट विज्ञापनों से टेस्ट करें

अपने ऐप्लिकेशन बनाते और उनकी टेस्टिंग करते समय, पक्का करें कि आप लाइव, प्रोडक्शन विज्ञापनों के बजाय टेस्ट विज्ञापनों का इस्तेमाल करें. ऐसा न करने पर आपका खाता निलंबित किया जा सकता है.

टेस्ट विज्ञापनों को लोड करने का सबसे आसान तरीका है, Android बैनर के लिए बने हमारे टेस्ट विज्ञापन यूनिट आईडी का इस्तेमाल करना:

/6499/example/adaptive-banner

इसे हर अनुरोध पर टेस्ट विज्ञापन दिखाने के लिए खास तौर पर कॉन्फ़िगर किया गया है. साथ ही, कोडिंग, टेस्टिंग, और डीबग करने के दौरान, इसे अपने ऐप्लिकेशन में इस्तेमाल किया जा सकता है. अपना ऐप्लिकेशन पब्लिश करने से पहले यह पक्का कर लें कि आपने इसे अपने विज्ञापन यूनिट आईडी से बदल दिया हो.

मोबाइल विज्ञापन SDK टूल के टेस्ट विज्ञापन कैसे काम करते हैं, इस बारे में ज़्यादा जानकारी के लिए विज्ञापनों की जांच करें लेख पढ़ें.

लेआउट में AdManagerAdView जोड़ें

बैनर दिखाने के लिए सबसे पहले AdManagerAdView को उस Activity या Fragment के लेआउट में रखें जहां आपको इसे दिखाना है.:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

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

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

विज्ञापन लोड करें

AdManagerAdView तय हो जाने के बाद, अगला कदम विज्ञापन को लोड करना होता है. ऐसा AdManagerAdView क्लास में loadAd() तरीके से किया जाता है. इसके लिए, AdManagerAdRequest पैरामीटर की ज़रूरत होती है, जिसमें किसी एक विज्ञापन अनुरोध के बारे में रनटाइम की जानकारी होती है. जैसे, टारगेटिंग की जानकारी.

यहां एक उदाहरण दिया गया है, जिसमें Activity के onCreate() तरीके से विज्ञापन लोड करने का तरीका बताया गया है:

Java

private void loadBanner() {
  // 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);

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

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

अगर आपका विज्ञापन लोड नहीं हो पाता है, तो आपको अलग से किसी दूसरे विज्ञापन का अनुरोध करने की ज़रूरत नहीं है. हालांकि, इसके लिए ज़रूरी है कि आपने विज्ञापन यूनिट को रीफ़्रेश करने के लिए कॉन्फ़िगर किया हो. Google Mobile Ads SDK, Ad Managerवेब इंटरफ़ेस में तय की गई आपकी सभी रीफ़्रेश दर का पालन करता है. अगर आपने रीफ़्रेश करने की सुविधा को चालू नहीं किया है, तो आपको नया अनुरोध करना होगा.

हो गया! आपका ऐप्लिकेशन अब बैनर विज्ञापन दिखाने के लिए तैयार है.

विज्ञापन इवेंट

विज्ञापन के लाइफ़साइकल में कई इवेंट सुने जा सकते हैं. इनमें लोड होने की प्रोसेस, विज्ञापन इंप्रेशन, और क्लिक के साथ-साथ विज्ञापन के खुलने और बंद होने के इवेंट भी शामिल हैं. हमारा सुझाव है कि बैनर लोड करने से पहले, कॉलबैक को सेट करें.

Java

AdManagerAdView.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.
    }
});

Kotlin

AdManagerAdView.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() तरीके को तब शुरू किया जाता है, जब कोई उपयोगकर्ता किसी विज्ञापन के डेस्टिनेशन यूआरएल (विज्ञापन के लैंडिंग पेज का यूआरएल) को देखने के बाद ऐप्लिकेशन पर वापस आता है. आपका ऐप्लिकेशन, निलंबित गतिविधियों को फिर से शुरू करने के लिए या किसी अन्य काम के लिए इसका इस्तेमाल कर सकता है, ताकि वह इंटरैक्शन के लिए तैयार हो सके.
onAdFailedToLoad() सिर्फ़ onAdFailedToLoad() तरीके में पैरामीटर शामिल होता है. LoadAdError टाइप के गड़बड़ी पैरामीटर से पता चलता है कि कौनसी गड़बड़ी हुई है. ज़्यादा जानकारी के लिए, विज्ञापन लोड करने से जुड़ी गड़बड़ियों को डीबग करने का दस्तावेज़ देखें.
onAdImpression() जब किसी विज्ञापन के लिए इंप्रेशन रिकॉर्ड किया जाता है, तब onAdImpression() तरीका शुरू किया जाता है.
onAdLoaded() विज्ञापन लोड होने के बाद, onAdLoaded() तरीका इस्तेमाल किया जाता है. उदाहरण के लिए, अगर आपको अपनी गतिविधि या फ़्रैगमेंट में AdManagerAdView को तब तक जोड़ना है, जब तक यह पक्का न हो जाए कि कोई विज्ञापन लोड होगा, तो ऐसा यहां किया जा सकता है.
onAdOpened() जब कोई विज्ञापन, स्क्रीन को कवर करने वाला ओवरले खोलता है, तब onAdOpened() तरीका शुरू हो जाता है.

वीडियो विज्ञापनों के लिए हार्डवेयर से तेज़ी लाने की सुविधा

बैनर विज्ञापन व्यू में वीडियो विज्ञापन सही तरीके से दिखाने के लिए, हार्डवेयर ऐक्सेलरेशन की सुविधा चालू होनी चाहिए.

हार्डवेयर से तेज़ी लाने की सुविधा डिफ़ॉल्ट रूप से चालू होती है, लेकिन कुछ ऐप्लिकेशन इस सुविधा को बंद कर सकते हैं. अगर यह आपके ऐप्लिकेशन पर लागू होता है, तो हमारा सुझाव है कि विज्ञापनों का इस्तेमाल करने वाली Activity क्लास के लिए, हार्डवेयर से तेज़ी लाने की सुविधा चालू करें.

हार्डवेयर से तेज़ी लाने की सुविधा चालू करना

अगर आपका ऐप्लिकेशन दुनिया भर में हार्डवेयर से तेज़ी लाने की सुविधा चालू करने पर ठीक से काम नहीं करता है, तो आप इसे अलग-अलग गतिविधियों के लिए भी कंट्रोल कर सकते हैं. 'हार्डवेयर से तेज़ी लाएं' सुविधा को चालू या बंद करने के लिए, आपके पास अपने AndroidManifest.xml में <application> और <activity> एलिमेंट के लिए android:hardwareAccelerated एट्रिब्यूट का इस्तेमाल करने का विकल्प है. नीचे दिए गए उदाहरण में पूरे ऐप्लिकेशन के लिए हार्डवेयर से तेज़ी लाने की सुविधा चालू की जाती है, लेकिन यह किसी एक गतिविधि के लिए बंद हो जाता है:

<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 को चालू करें:

Java

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

Kotlin

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

जब आप यह तय कर लेते हैं कि कोई विज्ञापन वापस लाया जा चुका है और वह स्क्रीन पर दिखाया गया है, तो आप मैन्युअल रूप से इंप्रेशन रिकॉर्ड कर सकते हैं:

Java

AdManagerAdView.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

ऐप्लिकेशन इवेंट

ऐप्लिकेशन इवेंट की मदद से, ऐसे विज्ञापन बनाए जा सकते हैं जिनसे उनके ऐप्लिकेशन कोड पर मैसेज भेजे जा सकते हैं. इसके बाद, ऐप्लिकेशन इन मैसेज के आधार पर कार्रवाइयां कर सकता है.

AppEventListener का इस्तेमाल करके, Ad Manager से जुड़े खास ऐप्लिकेशन इवेंट सुने जा सकते हैं. ये इवेंट, विज्ञापन की लाइफ़साइकल के दौरान किसी भी समय हो सकते हैं, onAdLoaded() को कॉल करने से पहले भी.

Java

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

Kotlin

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

जब किसी विज्ञापन में कोई ऐप्लिकेशन इवेंट होता है, तब void onAppEvent(String name, String info) को कॉल किया जाता है. इस इंटरफ़ेस को आपकी गतिविधि या किसी दूसरे ऑब्जेक्ट से लागू किया जा सकता है:

Java

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

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

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

class BannerExample : Activity(), AppEventListener {
}

और फिर AdManagerAdView को पास कर दिया गया:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

यहां एक उदाहरण में बताया गया है कि रंग के नाम वाले ऐप्लिकेशन इवेंट के आधार पर, अपने ऐप्लिकेशन के बैकग्राउंड का रंग कैसे बदला जा सकता है:

Java

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

Kotlin

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 ऐप्लिकेशन इवेंट का उदाहरण देखें.

Java Kotlin

अन्य संसाधन

GitHub पर उदाहरण

  • ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का उदाहरण: Java | Kotlin
  • बेहतर सुविधाओं का डेमो: Java | Kotlin

अगले चरण

छोटे किए जा सकने वाले बैनर विज्ञापन

छोटे किए जा सकने वाले बैनर विज्ञापन, ऐसे बैनर विज्ञापन होते हैं जिन्हें शुरुआत में एक बड़े ओवरले के तौर पर दिखाया जाता है. इन विज्ञापनों में, विज्ञापन को छोटे साइज़ में छोटा करने के लिए बटन होता है. अपने कैंपेन की परफ़ॉर्मेंस को और ऑप्टिमाइज़ करने के लिए इसका इस्तेमाल करें. ज़्यादा जानकारी के लिए, छोटे हो जाने वाले बैनर विज्ञापन देखें.

इनलाइन अडैप्टिव बैनर

इनलाइन अडैप्टिव बैनर, ऐंकर किए गए अडैप्टिव बैनर की तुलना में, बड़े और लंबे होते हैं. उनकी लंबाई अलग-अलग हो सकती है और उनकी लंबाई डिवाइस की स्क्रीन जितनी हो सकती है. ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों के बजाय, इनलाइन अडैप्टिव बैनर इस्तेमाल करने का सुझाव दिया जाता है. ये ऐसे अडैप्टिव बैनर विज्ञापन होते हैं जो स्क्रोल किए जा सकने वाले कॉन्टेंट में बैनर विज्ञापन दिखाते हैं. ज़्यादा जानकारी के लिए, इनलाइन अडैप्टिव बैनर देखें.

दूसरे विषय एक्सप्लोर करें