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

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

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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

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

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

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

AdLoader बनाना

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

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

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

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

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

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

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

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

loadAd()

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

Java

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

Kotlin

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

loadAds()

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

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

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

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

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

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

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

कॉलबैक

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

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

यहां उदाहरण के तौर पर, onNativeAdLoaded() कॉलबैक में isLoading() को देखने का तरीका बताया गया है:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

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

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

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

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

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

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

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

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

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

  • जब तक पहला अनुरोध लोड नहीं हो जाता, तब तक AdLoader पर loadAd() या loadAds() को कॉल न करें.

  • नेटिव विज्ञापन को सिर्फ़ ज़रूरत के हिसाब से कैश मेमोरी में सेव करें. उदाहरण के लिए, पहले से कैश मेमोरी में सेव करने के दौरान, सिर्फ़ उन विज्ञापनों को कैश मेमोरी में सेव करें जो स्क्रीन पर तुरंत दिखते हैं. नेटिव विज्ञापनों की बहुत ज़्यादा मेमोरी फ़ुटप्रिंट होती है. साथ ही, नेटिव विज्ञापनों को मिटाए बिना कैश मेमोरी में सेव करने की वजह से मेमोरी का बहुत ज़्यादा इस्तेमाल होता है.

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

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

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

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

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

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

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

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

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