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

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

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

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

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

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

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

टेस्ट विज्ञापन लोड करने का सबसे आसान तरीका, 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 = AdRequest.Builder().build()
adView.loadAd(adRequest)

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

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

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

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

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

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

Kotlin

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

// Remove banner from view hierarchy.
if (adView.getParent() instanceof ViewGroup) {
  ((ViewGroup) adView.getParent()).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
// Drop reference to the banner ad.
adView = null;

Jetpack Compose


DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

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

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

Java

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

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 टाइप का गड़बड़ी पैरामीटर बताता है कि कौनसी गड़बड़ी हुई. ज़्यादा जानकारी के लिए, विज्ञापन लोड करने से जुड़ी गड़बड़ियों को डीबग करने के बारे में दस्तावेज़ देखें.
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.
            }
        }
    }
}

यहां उस क्रिएटिव का उदाहरण दिया गया है जो Color ऐप्लिकेशन के इवेंट मैसेज को Listener को भेजता है:

<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 JetpackCompose

अन्य संसाधन

GitHub पर मौजूद उदाहरण

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

अगले चरण

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

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

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

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

अन्य विषयों के बारे में जानें