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

प्लैटफ़ॉर्म चुनें: Android iOS Unity Flutter

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

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

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

  • शुरुआती निर्देश पढ़ें.
  • ज़रूरी नहीं: बैनर विज्ञापनों को लागू करने के उदाहरण के लिए, यहां दिए गए सैंपल ऐप्लिकेशन में से कोई एक चुनें:
    • Java, Kotlin या Jetpack Compose में ऐंकर किए गए अडैप्टिव बैनर विज्ञापनों का उदाहरण.
    • Java या Kotlin की ऐडवांस सुविधाओं का डेमो.

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

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

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

/21775744923/example/adaptive-banner

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

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

विज्ञापन व्यू तय करना

एक्सएमएल लेआउट

अपने लेआउट एक्सएमएल फ़ाइल में एक व्यू जोड़ें, ताकि वह ऐंकर किए गए अडैप्टिव बैनर विज्ञापन के लिए कंटेनर के तौर पर काम कर सके:

<!-- 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. compose-util मॉड्यूल से BannerAd क्लास कंपोज़ करें:


// 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 को, तय की गई चौड़ाई वाले ऐंकर अडैप्टिव बैनर टाइप पर सेट करें:

Java

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin

// 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 बनाएं:

Java


// 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);

Kotlin


// 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 को लागू करने के बाद, अगला चरण विज्ञापन लोड करना है. यह काम, AdManagerAdView क्लास में मौजूद loadAd() तरीके से किया जाता है. यह AdManagerAdRequest पैरामीटर लेता है. इसमें किसी एक विज्ञापन अनुरोध के बारे में रनटाइम की जानकारी होती है. जैसे, टारगेटिंग की जानकारी.

यहां विज्ञापन लोड करने का तरीका बताने वाला एक उदाहरण दिया गया है:

Java

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

Kotlin

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

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

विज्ञापन रीफ़्रेश करना

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

विज्ञापन संसाधन को रिलीज़ करना

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

विज्ञापन के संसाधन को रिलीज़ करने के लिए, विज्ञापन को व्यू हैरारकी से हटाएं और उसके सभी रेफ़रंस हटा दें:

Java

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

Kotlin

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
}

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

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

Java

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

Kotlin

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() मेथड तब शुरू होता है, जब कोई उपयोगकर्ता विज्ञापन के डेस्टिनेशन यूआरएल को देखने के बाद ऐप्लिकेशन पर वापस आता है. आपका ऐप्लिकेशन इसका इस्तेमाल, निलंबित की गई गतिविधियों को फिर से शुरू करने के लिए कर सकता है. इसके अलावा, इसका इस्तेमाल किसी अन्य ज़रूरी काम को पूरा करने के लिए भी किया जा सकता है, ताकि ऐप्लिकेशन को इंटरैक्शन के लिए तैयार किया जा सके.
onAdFailedToLoad() onAdFailedToLoad() मेथड में ही सिर्फ़ एक पैरामीटर शामिल होता है. LoadAdError टाइप का error पैरामीटर बताता है कि कौनसी गड़बड़ी हुई है. ज़्यादा जानकारी के लिए, विज्ञापन लोड करने से जुड़ी गड़बड़ियों को ठीक करने के बारे में जानकारी देने वाला दस्तावेज़ पढ़ें.
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 को इंप्रेशन पिंग मैन्युअल तरीके से भेजे जा सकते हैं:

Java

if (adManagerAdView != null) {
  adManagerAdView.setManualImpressionsEnabled(true);
}

Kotlin

adManagerAdView?.setManualImpressionsEnabled(true)

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

Java

if (adManagerAdView != null) {
  adManagerAdView.recordManualImpression();
}

Kotlin

adManagerAdView?.recordManualImpression()

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

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

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

अपने AdManagerAdView पर AppEventListener सेट करें:

Java

if (adManagerAdView != null) {
  adManagerAdView.setAppEventListener(this);
}

Kotlin

adManagerAdView?.appEventListener = this

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

Java

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

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>

API Demo ऐप्लिकेशन में ऐप्लिकेशन इवेंट लागू करने के लिए, Ad Manager ऐप्लिकेशन इवेंट का उदाहरण देखें.

Java Kotlin JetpackCompose

अगले चरण

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

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

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

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

अन्य विषय एक्सप्लोर करें