ऐंकर किए गए अडैप्टिव बैनर

अडैप्टिव बैनर, रिस्पॉन्सिव विज्ञापनों की अगली-पीढ़ी की टेक्नोलॉजी हैं. ये हर डिवाइस के हिसाब से विज्ञापन के साइज़ को ऑप्टिमाइज़ करके, विज्ञापनों की परफ़ॉर्मेंस को बेहतर बनाते हैं. अडैप्टिव बैनर का इस्तेमाल करके, स्मार्ट बैनर में सुधार किया जा सकता है. अडैप्टिव बैनर का इस्तेमाल करके, विज्ञापन की चौड़ाई तय की जा सकती है. साथ ही, अडैप्टिव बैनर का इस्तेमाल करके, विज्ञापन का सही साइज़ तय किया जा सकता है.

विज्ञापन का सबसे अच्छा साइज़ चुनने के लिए, अडैप्टिव बैनर तय ऊंचाई के बजाय, तय आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) का इस्तेमाल करते हैं. इससे बैनर विज्ञापन सभी डिवाइसों की स्क्रीन पर एक जैसा हिस्सा लेते हैं. साथ ही, इनसे बेहतर परफ़ॉर्मेंस मिल सकती है.

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

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

अडैप्टिव बैनर का इस्तेमाल कब करना चाहिए

अडैप्टिव बैनर इस तरह से डिज़ाइन किए गए हैं कि वे इंडस्ट्री स्टैंडर्ड वाले 320x50 बैनर के साइज़ और उनकी जगह लागू होने वाले स्मार्ट बैनर फ़ॉर्मैट, दोनों की जगह नए बैनर का इस्तेमाल कर सकें.

आम तौर पर, इन बैनर साइज़ का इस्तेमाल ऐंकर बैनर के रूप में किया जाता है. आम तौर पर, ये साइज़, स्क्रीन पर सबसे ऊपर या सबसे नीचे लॉक किए जाते हैं.

ऐंकर किए गए ऐसे बैनर का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 320x50 वाले स्टैंडर्ड विज्ञापन की तरह ही होता है.


320x50 बैनर

अडैप्टिव बैनर

स्मार्ट बैनर

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

  • इस सुविधा में, आपकी बताई गई चौड़ाई के बजाय, हर चौड़ाई को फ़ुल स्क्रीन मोड में दिखाया जाता है. इससे iOS पर सुरक्षित जगह और Android पर डिसप्ले कटआउट का पता लगाने में मदद मिलती है.

  • यह अलग-अलग साइज़ वाले डिवाइसों के लिए एक जैसी ऊंचाई चुनने के बजाय, किसी खास डिवाइस के लिए सबसे सही ऊंचाई चुनता है, ताकि डिवाइस के फ़्रैगमेंटेशन के असर को कम किया जा सके.

लागू करने से जुड़ी जानकारी

अपने ऐप्लिकेशन में अडैप्टिव बैनर को लागू करते समय, इन बातों को ध्यान में रखें:

  • आपको उस व्यू की चौड़ाई पता होनी चाहिए, जिसमें विज्ञापन दिखाया जाएगा. साथ ही, डिवाइस की चौड़ाई के साथ-साथ, लागू होने वाली सुरक्षित जगहों या कटआउट का भी ध्यान रखें.
  • पक्का करें कि जब छोटे विज्ञापन साइज़, विज्ञापन स्लॉट नहीं भर पाते, तब AdMob की नीतियों का पालन करने के लिए आपके विज्ञापन व्यू का बैकग्राउंड साफ़ न हो.
  • पक्का करें कि Google मोबाइल विज्ञापन Unity प्लगिन के सबसे नए वर्शन का इस्तेमाल किया जा रहा है. मीडिएशन के लिए, हर मीडिएशन अडैप्टर के सबसे नए वर्शन का इस्तेमाल करें.
  • अडैप्टिव बैनर के साइज़ इस तरह से डिज़ाइन किए गए हैं कि वे पूरी चौड़ाई का इस्तेमाल करते समय सबसे सही तरीके से काम करें. ज़्यादातर मामलों में, यह इस्तेमाल किए जा रहे डिवाइस की स्क्रीन की पूरी चौड़ाई होगी. उन जगहों का भी ध्यान रखें जहां सुरक्षा सुविधाएं लागू होती हैं.
  • अडैप्टिव AdSize API का इस्तेमाल करते समय, Google Mobile Ads SDK, बैनर का साइज़, तय की गई चौड़ाई के हिसाब से विज्ञापन की लंबाई के हिसाब से ऑप्टिमाइज़ करेगा.
  • ज़रूरत के हिसाब से विज्ञापन का साइज़ तय करने के तीन तरीके हैं: लैंडस्केप के लिए AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth, पोर्ट्रेट के लिए AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth, और लागू करते समय मौजूदा ओरिएंटेशन के लिए AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth.
  • किसी डिवाइस पर दी गई चौड़ाई के लिए लौटाया गया आकार हमेशा एक जैसा ही रहेगा इसलिए, दिए गए डिवाइस पर अपने लेआउट की जांच करने के बाद, आप भरोसा रख सकते हैं कि विज्ञापन का आकार नहीं बदलेगा.
  • ऐंकर किए गए बैनर की ऊंचाई, कभी भी डिवाइस की ऊंचाई के 15% या 90 डेंसिटी वाले इंडिपेंडेंट पिक्सल से कम नहीं होनी चाहिए. साथ ही, यह कभी भी 50 डेंसिटी इंडिपेंडेंट पिक्सल से कम नहीं होनी चाहिए.
  • पूरी चौड़ाई वाले बैनर के लिए, कोई खास चौड़ाई चुनने के बजाय, AdSize.FullWidth फ़्लैग का इस्तेमाल किया जा सकता है.

क्विकस्टार्ट

अडैप्टिव ऐंकर बैनर को लागू करने के लिए यह तरीका अपनाएं.

  1. अडैप्टिव बैनर वाले विज्ञापन का साइज़ पाएं. आपको स्टैटिक मेथड से साइज़ की जानकारी मिलती है. अडैप्टिव बैनर का अनुरोध करते समय, इस साइज़ का इस्तेमाल किया जाता है. अडैप्टिव विज्ञापन साइज़ पाने के लिए, पक्का करें कि:
    1. इस डिवाइस की चौड़ाई को डेंसिटी इंडिपेंडेंट पिक्सल में इस्तेमाल करें या अगर आपको स्क्रीन की पूरी चौड़ाई का इस्तेमाल नहीं करना है, तो अपनी चौड़ाई सेट करें. Screen.width जैसे Unity API, ऐब्सलूट पिक्सल दिखाते हैं. इसलिए, आपको इन्हें डिवाइस स्केल के हिसाब से बांटना होगा (इसे MobileAds.Utils.GetDeviceScale() से फिर से उपलब्ध कराया जा सकता है).
    2. पूरी चौड़ाई वाले बैनर के लिए, AdSize.FullWidth फ़्लैग का इस्तेमाल करें.
    3. विज्ञापन साइज़ क्लास पर सही स्टैटिक तरीके का इस्तेमाल करें, जैसे कि AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width) मौजूदा ओरिएंटेशन के लिए, अडैप्टिव AdSize ऑब्जेक्ट पाएं.
  2. अपनी विज्ञापन यूनिट का आईडी, ज़रूरत के हिसाब से साइज़, और विज्ञापन के लिए सही जगह का इस्तेमाल करके BannerView ऑब्जेक्ट बनाएं.
  3. कोई विज्ञापन अनुरोध ऑब्जेक्ट बनाएं और अपने तैयार विज्ञापन व्यू पर LoadAd() तरीके का इस्तेमाल करके अपना बैनर लोड करें, जैसा कि आप किसी सामान्य बैनर अनुरोध के मामले में करते हैं.

कोड का उदाहरण

यहां एक स्क्रिप्ट का उदाहरण दिया गया है, जो स्क्रीन की चौड़ाई को ध्यान में रखते हुए, सुरक्षित जगह को ध्यान में रखते हुए अडैप्टिव बैनर को लोड और फिर से लोड करती है:

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class AdaptiveBannerSample : MonoBehaviour
{
    private BannerView _bannerView;

    // Use this for initialization
    void Start()
    {
        // Set your test devices.
        // https://developers.google.com/admob/unity/test-ads
        RequestConfiguration requestConfiguration = new RequestConfiguration
        {
            TestDeviceIds = new List<string>
            {
                AdRequest.TestDeviceSimulator,
                // Add your test device IDs (replace with your own device IDs).
                #if UNITY_IPHONE
                "96e23e80653bb28980d3f40beb58915c"
                #elif UNITY_ANDROID
                "75EF8D155528C04DACBBA6F36F433035"
                #endif
            }
        };
        MobileAds.SetRequestConfiguration(requestConfiguration);

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus status) => 
        {
            RequestBanner();
        });
    }

    public void OnGUI()
    {
        GUI.skin.label.fontSize = 60;
        Rect textOutputRect = new Rect(
          0.15f * Screen.width,
          0.25f * Screen.height,
          0.7f * Screen.width,
          0.3f * Screen.height);
        GUI.Label(textOutputRect, "Adaptive Banner Example");
    }

    private void RequestBanner()
    {
        // These ad units are configured to always serve test ads.
        #if UNITY_EDITOR
            string adUnitId = "unused";
        #elif UNITY_ANDROID
            string adUnitId = "ca-app-pub-3212738706492790/6113697308";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3212738706492790/5381898163";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Clean up banner ad before creating a new one.
        if (_bannerView != null)
        {
            _bannerView.Destroy();
        }

        AdSize adaptiveSize =
                AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);

        _bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Register for ad events.
        _bannerView.OnBannerAdLoaded += OnBannerAdLoaded;
        _bannerView.OnBannerAdLoadFailed += OnBannerAdLoadFailed;

        AdRequest adRequest = new AdRequest();

        // Load a banner ad.
        _bannerView.LoadAd(adRequest);
    }

    #region Banner callback handlers

    private void OnBannerAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("Banner view loaded an ad with response : "
                 + _bannerView.GetResponseInfo());
        Debug.Log("Ad Height: {0}, width: {1}",
                _bannerView.GetHeightInPixels(),
                _bannerView.GetWidthInPixels());
    }

    private void OnBannerAdLoadFailed(LoadAdError error)
    {
        Debug.LogError("Banner view failed to load an ad with error : "
                + error);
    }

    #endregion
}

यहां AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth फ़ंक्शन का इस्तेमाल करके, बैनर का साइज़ यह पता लगाया जाता है कि वह मौजूदा इंटरफ़ेस ओरिएंटेशन के लिए ऐंकर पोज़िशन में है या नहीं. दिए गए ओरिएंटेशन में ऐंकर बैनर को पहले से लोड करने के लिए, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth और AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth के सही फ़ंक्शन का इस्तेमाल करें.