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

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

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

जब कोई नेटिव विज्ञापन लोड होता है, तो आपके ऐप्लिकेशन को एक विज्ञापन ऑब्जेक्ट मिलता है. इसमें उसकी ऐसेट शामिल होती हैं. इसके बाद, उन्हें दिखाने की ज़िम्मेदारी ऐप्लिकेशन की होती है, न कि Google Mobile Ads SDK की.

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

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

ग्राहक की सफलता की कुछ कहानियां भी देखी जा सकती हैं: केस स्टडी 1, केस स्टडी 2.

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

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

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

नेटिव विज्ञापनों को AdLoader क्लास के साथ लोड किया जाता है. इसमें Builder क्लास होती है, ताकि विज्ञापन बनाते समय उसे कस्टमाइज़ किया जा सके. ऐप्लिकेशन बनाते समय, उसमें लिसनर जोड़ने से यह तय किया जाता है कि ऐप्लिकेशन किस तरह के नेटिव विज्ञापन पाने के लिए तैयार है.AdLoader इसके बाद, AdLoader सिर्फ़ उन टाइप के लिए अनुरोध करता है.

AdLoader बनाना

यहां दिए गए कोड से पता चलता है कि नेटिव विज्ञापन लोड करने वाला AdLoader कैसे बनाया जाता है:

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

AD_UNIT_ID को अपने टेस्ट डिवाइस के आईडी से बदलें.

forNativeAd() मेथड, NativeAd फ़ॉर्मैट के लिए AdLoader तैयार करता है. जब कोई विज्ञापन लोड हो जाता है, तब लिसनर ऑब्जेक्ट के onNativeAdLoaded() मेथड को कॉल किया जाता है.

AdLoader की मदद से AdListener सेट अप करना (ज़रूरी नहीं)

AdLoader बनाते समय, withAdListener फ़ंक्शन, लोडर के लिए AdListener सेट करता है. यह तरीका, AdListener को अपने पैरामीटर के तौर पर लेता है. जब विज्ञापन के लाइफ़साइकल इवेंट होते हैं, तब AdListener से कॉलबैक मिलते हैं:AdLoader

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

विज्ञापन जोड़ने का अनुरोध करें

AdLoader बनाने के बाद, अब इसका इस्तेमाल करके विज्ञापनों का अनुरोध किया जा सकता है. इसके लिए, दो तरीके उपलब्ध हैं: loadAd() और loadAds().

loadAd()

इस तरीके से, एक विज्ञापन का अनुरोध भेजा जाता है.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

इस तरीके से, एक साथ कई विज्ञापनों (पांच तक) के लिए अनुरोध भेजा जाता है:

Java

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

एक से ज़्यादा विज्ञापन लोड करना (ज़रूरी नहीं)

loadAds() तरीके में एक और पैरामीटर होता है: SDK को अनुरोध के लिए कितने विज्ञापन लोड करने की कोशिश करनी चाहिए. यह संख्या पांच तक सीमित है. साथ ही, यह ज़रूरी नहीं है कि एसडीके, अनुरोध किए गए विज्ञापनों की सटीक संख्या दिखाए.

Google Ads से मिले सभी विज्ञापन एक-दूसरे से अलग होंगे. हालांकि, आरक्षित इन्वेंट्री या तीसरे पक्ष के खरीदारों के विज्ञापन यूनीक होने की गारंटी नहीं है.

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

कॉलबैक

loadAd() को कॉल करने के बाद, पहले से तय किए गए लिसनर के तरीकों को एक ही बार कॉल किया जाता है, ताकि नेटिव विज्ञापन ऑब्जेक्ट डिलीवर किया जा सके या गड़बड़ी की सूचना दी जा सके.

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

यहां एक उदाहरण दिया गया है, जिसमें onNativeAdLoaded() कॉलबैक में isLoading() की जांच करने का तरीका बताया गया है:

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

संसाधन रिलीज़ करें

पक्का करें कि आपने लोड किए गए नेटिव विज्ञापनों पर, destroy() तरीके का इस्तेमाल किया हो. इससे इस्तेमाल किए गए संसाधन रिलीज़ हो जाते हैं और मेमोरी लीक नहीं होती.

पुष्टि करें कि आपकी गतिविधि के onDestroy() तरीके में सभी NativeAd रेफ़रंस मिटा दिए गए हैं.

अपने onNativeAdLoaded कॉलबैक में, यह पक्का करें कि डीरेफ़रंस किए जाने वाले किसी भी मौजूदा नेटिव विज्ञापन को डिस्ट्रॉय कर दिया गया हो.

एक और ज़रूरी जांच यह है कि गतिविधि बंद हो गई है या नहीं. अगर ऐसा है, तो दिखाए गए विज्ञापन पर destroy() को कॉल करें और तुरंत वापस आएं:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

सबसे सही तरीके

विज्ञापन लोड करते समय, इन नियमों का पालन करें.

  • किसी सूची में नेटिव विज्ञापनों का इस्तेमाल करने वाले ऐप्लिकेशन को, विज्ञापनों की सूची को पहले से कैश मेमोरी में सेव कर लेना चाहिए.

  • विज्ञापनों को पहले से कैश मेमोरी में सेव करते समय, अपनी कैश मेमोरी मिटाएं और एक घंटे बाद फिर से लोड करें.

  • पहले अनुरोध के लोड होने तक, AdLoader पर loadAd() या loadAds() को कॉल न करें.
  • नेटिव विज्ञापन की कैश मेमोरी को सिर्फ़ ज़रूरी डेटा तक सीमित रखें. उदाहरण के लिए, प्रीकैशिंग करते समय, सिर्फ़ उन विज्ञापनों को कैश मेमोरी में सेव करें जो स्क्रीन पर तुरंत दिखते हैं. नेटिव विज्ञापनों के लिए ज़्यादा मेमोरी की ज़रूरत होती है. साथ ही, नेटिव विज्ञापनों को मिटाए बिना कैश मेमोरी में सेव करने से, बहुत ज़्यादा मेमोरी का इस्तेमाल होता है.

  • जब नेटिव विज्ञापनों का इस्तेमाल न हो रहा हो, तब उन्हें डिस्ट्रॉय कर दें.

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

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

हार्डवेयर ऐक्सलरेशन की सुविधा डिफ़ॉल्ट रूप से चालू होती है. हालांकि, कुछ ऐप्लिकेशन इसे बंद कर सकते हैं. अगर यह समस्या आपके ऐप्लिकेशन पर लागू होती है, तो हमारा सुझाव है कि विज्ञापन दिखाने वाली 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>

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

विज्ञापन दिखाना

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