शुरू करें

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

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

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

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

  • Google मोबाइल विज्ञापन Unity प्लगिन का 7.0.0 या इसके बाद वाला वर्शन.
  • शुरुआती निर्देश के बारे में पूरी जानकारी दें.
  • नेटिव विज्ञापन ऐड-ऑन डाउनलोड और इंस्टॉल करें.

नेटिव विज्ञापन फ़ॉर्मैट लोड करें

नेटिव विज्ञापन AdLoader क्लास की मदद से लोड किए जाते हैं. क्लास के पास AdLoader.Builder क्लास होती है, ताकि उसे बनाते समय उसे पसंद के मुताबिक बनाया जा सके. ForNativeAd() तरीका, AdLoader को नेटिव विज्ञापनों को मैनेज करने के लिए कॉन्फ़िगर करता है.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

AdLoader विज्ञापन इवेंट के लिए रजिस्टर करें

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

OnNativeAdLoaded

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

OnAdFailedToLoad

यह तब शुरू होता है, जब कोई नेटिव विज्ञापन लोड नहीं हो पाता.

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

AdLoader बनाने के बाद, विज्ञापन का अनुरोध करने के लिए इसके LoadAd() तरीके को कॉल करें:

adLoader.LoadAd(new AdRequest.Builder().Build());

विज्ञापन अनुरोध को एक साथ रखें

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

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

सफल न होने वाले विज्ञापन लोड मैनेज करना

OnAdFailedToLoad इवेंट का टाइप EventHandle<AdFailedToLoadEventArgs> है. इस इवेंट से विज्ञापन लोड नहीं होने की वजह को पार्स करने की जानकारी नीचे दी गई है.

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

नेटिव विज्ञापन दिखाएं

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

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

OnNativeAdLoaded इवेंट का टाइप EventHandler<NativeAdEventArgs> है. NativeAd ऑब्जेक्ट में शामिल विज्ञापन को NativeAdEventArgs से वापस लाया जा सकता है. जैसे:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

नेटिव विज्ञापन एसेट वापस पाएं

विज्ञापन लोड होने के बाद, उनकी एसेट को नीचे बताए गए तरीके से ऐक्सेस किया जा सकता है. ग्राफ़िकल ऐसेट को Texture2D ऑब्जेक्ट के तौर पर दिखाया जाता है और टेक्स्ट ऐसेट को string ऑब्जेक्ट के तौर पर दिखाया जाता है.

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

ध्यान दें कि विज्ञापन की ऐसेट को सिर्फ़ मुख्य थ्रेड पर ऐक्सेस किया जाना चाहिए. उदाहरण के लिए, Unity स्क्रिप्ट के Update() तरीके से. इस बात का भी ध्यान रखें कि नीचे दी गई ऐसेट के मौजूद होने की गारंटी हमेशा नहीं होती. इसलिए, उन्हें दिखाने से पहले उनकी जांच करनी चाहिए:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

AdChoices ऐसेट

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

विज्ञापन की ऐसेट के लिए GameObjects रजिस्टर करें

अपने Unity ऐप्लिकेशन में विज्ञापन की ऐसेट दिखाने के लिए, आपको GameObject को रजिस्टर करना होगा. रजिस्ट्रेशन हो जाने पर, GameObject को रजिस्टर करने के लिए इस्तेमाल किए गए तरीके से bool दिखेगा. List<GameObject> के लिए यह तरीका, रजिस्टर की गई GameObject की संख्या के बारे में बताने वाला int दिखाता है.

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

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

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

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

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

डेमो

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

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}