विज्ञापन स्‍थापना

इस गाइड में, Google Mobile Ads Unity प्लगिन की AdPlacements सुविधा का इस्तेमाल करके, अपने ऐप्लिकेशन के लिए विज्ञापन बनाने और उन्हें दिखाने का तरीका बताया गया है.

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

Google Mobile Ads SDK को शुरू करना

विज्ञापन लोड करने से पहले, Google Mobile Ads SDK को शुरू करें. इसके लिए, MobileAds.Initialize() को Action<InitializationStatus> कॉलबैक के साथ कॉल करें. इसे सिर्फ़ एक बार करना होता है. सबसे सही समय, ऐप्लिकेशन लॉन्च करने के दौरान होता है.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize Google Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

विज्ञापन प्लेसमेंट बनाना

Google Mobile Ads की मदद से बैनर दिखाने के लिए, सबसे पहले विज्ञापन प्लेसमेंट बनाएं और उसे कॉन्फ़िगर करें. Unity Editor में ऐसेट > Google Mobile Ads > विज्ञापन प्लेसमेंट में जाकर, बैनर, पेज पर अचानक दिखने वाले विज्ञापन या इनाम वाले विज्ञापन का विज्ञापन प्लेसमेंट चुना जा सकता है. इसके बाद, तीन डेमो विज्ञापन प्लेसमेंट सेट अप किए जाते हैं और इस्तेमाल के लिए तैयार होते हैं.

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

विज्ञापन प्लेसमेंट कॉन्फ़िगरेशन

हर प्लेसमेंट में ये प्रॉपर्टी होती हैं:

प्लेसमेंट नाम
प्लेसमेंट का नाम. इस कुकी का इस्तेमाल, किसी सीन में विज्ञापन सेट अप करते समय प्लेसमेंट की पहचान करने के लिए किया जाता है.
विज्ञापन फ़ॉर्मैट
बैनर, इनाम वाले, इंटरस्टीशियल विज्ञापन. विज्ञापन का टाइप.
विज्ञापन इकाई की ID
Android और iOS के लिए, अपनी बैनर विज्ञापन यूनिट का आईडी दें. आपको कम से कम एक विज्ञापन यूनिट आईडी देना होगा.
सभी सीन में एक जैसा रहता है
इस विकल्प को चुनने पर, सीन में बदलाव होने के बावजूद बैनर स्क्रीन पर बना रहेगा. यह DontDestroyOnLoad के जैसा ही काम करता है.
अपने-आप लोड होने की सुविधा चालू है
इस बॉक्स को चुनने पर, विज्ञापन प्लेसमेंट से जुड़े सीन के लोड होने पर विज्ञापन अपने-आप लोड हो जाएगा.

इस स्क्रीनशॉट में, My Awesome Banner नाम के विज्ञापन प्लेसमेंट का उदाहरण दिखाया गया है.

सीन में AdGameObject जोड़ना

Unity Editor में GameObject > Google Mobile Ads का इस्तेमाल करके, बैनर, इंटरस्टीशियल या इनाम वाले फ़ॉर्मैट के लिए AdGameObject को अपने सीन में जोड़ा जा सकता है. चालू सीन में प्लेसमेंट जोड़ने के लिए, फ़ॉर्मैट चुनें.

सीन में AdGameObject जोड़ने के बाद, आपको Unity Editor के Hierarchy व्यू में विज्ञापन दिखाने वाला GameObject दिखेगा.

GameObject का नाम बदलकर, प्लेसमेंट का नाम बदला जा सकता है. इस स्क्रीनशॉट में, बैनर विज्ञापन नाम का AdGameObject दिखाया गया है.

AdGameObject सेटिंग

Ad Game Object (Script) कॉम्पोनेंट की सेटिंग में, Inspector व्यू से अपनी सीन में AdGameObject को कॉन्फ़िगर किया जा सकता है.

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

कॉन्फ़िगर किए गए प्लेसमेंट की ड्रॉप-डाउन सूची से, विज्ञापन प्लेसमेंट चुनें. इस सूची में, सिर्फ़ सही फ़ॉर्मैट वाली विज्ञापन यूनिट होंगी. उदाहरण के लिए, बैनर विज्ञापन वाले गेम ऑब्जेक्ट के लिए, ड्रॉपडाउन में सिर्फ़ कॉन्फ़िगर किए गए बैनर विज्ञापन प्लेसमेंट दिखेंगे.

BannerAdGameObject कॉन्फ़िगरेशन (सिर्फ़ बैनर के लिए)

  • साइज़ - बैनर का वह साइज़ चुनें जिसका आपको इस्तेमाल करना है.
    • ऐंकर किए गए अडैप्टिव बैनर में कुछ और विकल्प मिलते हैं:
      • ओरिएंटेशन - विज्ञापन की ऊंचाई का हिसाब लगाने के लिए, डिवाइस का इस्तेमाल किया गया ओरिएंटेशन चुनें.
      • स्क्रीन की पूरी चौड़ाई का इस्तेमाल करें - इस विकल्प को चुनने पर, बैनर स्क्रीन की पूरी चौड़ाई में दिखेगा. पूरी स्क्रीन की चौड़ाई का इस्तेमाल करें विकल्प से सही का निशान हटाने पर, स्क्रीन की चौड़ाई को 50 से 99% तक अडजस्ट किया जा सकता है.
    • कस्टम विकल्प की मदद से, बैनर की चौड़ाई और ऊंचाई तय की जा सकती है.
  • विज्ञापन की पोज़िशन - वह पोज़िशन चुनें जहां बैनर को प्लेस करना है.

कॉलबैक

विज्ञापन के कॉल बैक से जुड़े फ़ंक्शन लागू किए जा सकते हैं. उदाहरण के लिए, अगर आपको यह मैनेज करना है कि बैनर विज्ञापन लोड न होने पर क्या करना है, तो:

  1. विज्ञापन कॉलबैक के साथ काम करने वाला फ़ंक्शन बनाएं.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. ऊपर दिए गए फ़ंक्शन वाली स्क्रिप्ट को सीन में मौजूद किसी भी GameObject से अटैच करें.

  3. + बटन पर क्लिक करें. इसके बाद, उस GameObject को खींचें और छोड़ें जिससे आपने स्क्रिप्ट अटैच की है.

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

स्क्रिप्ट से AdGameObject का इस्तेमाल करना

स्क्रिप्ट से AdGameObject इंस्टेंस पाना

सभी AdGameObject ऑब्जेक्ट में, LoadAd() सुविधा वाला तरीका होता है. इससे, सामान्य और बिना टारगेट किए गए AdRequest वाला विज्ञापन लोड होगा. टारगेटिंग लागू करने के लिए, आपको LoadAd(AdRequest adRequest) का इस्तेमाल करना चाहिए. इसके लिए, आपको कॉन्फ़िगर किया गया अपना विज्ञापन अनुरोध इस्तेमाल करना होगा.

AdGameObject का इंस्टेंस पाने के लिए, हर फ़ॉर्मैट के लिए इस तरीके का इस्तेमाल करें:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

लौटाए गए BannerAdGameObject ऑब्जेक्ट में, Hide() और Show() जैसे आसान तरीके भी होते हैं.

मध्यवर्ती

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

लौटाए गए InterstitialAdGameObject ऑब्जेक्ट में, ShowIfLoaded() नाम का एक सुविधाजनक तरीका होता है.

इनाम दिया गया

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

लौटाए गए RewardedAdGameObject ऑब्जेक्ट में, ShowIfLoaded() नाम का एक सुविधाजनक तरीका होता है.

उदाहरण के लिए, BannerAdGameObject का इंस्टेंस पाया जा सकता है और इसे इस तरह लोड किया जा सकता है:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

अगर BannerAd नाम का कोई BannerAdGameObject है, तो आपको इसका इंस्टेंस इस तरह मिल सकता है:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

AdGameObject में मौजूद विज्ञापन ऑब्जेक्ट को ऐक्सेस करना

इन स्निपेट में, AdGameObject से जुड़े विज्ञापन ऑब्जेक्ट को ऐक्सेस करने का तरीका बताया गया है.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

इंटरस्टीशियल विज्ञापन

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

इनाम दिया गया

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

उदाहरण

इंटरस्टीशियल विज्ञापन दिखाना

यहां AdGameObject का इस्तेमाल करके, इंटरस्टीशियल विज्ञापन को लोड करने और दिखाने के लिए गेम को कॉन्फ़िगर करने का उदाहरण दिया गया है.

सीन में InterstitialAdGameObject जोड़ें और अपने-आप लोड होने की सुविधा चालू है चालू करें, ताकि सीन लोड होने पर विज्ञापन अपने-आप लोड हो जाए.

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

इसके बाद, स्क्रीन ट्रांज़िशन के बीच में पेज पर अचानक दिखने वाला विज्ञापन दिखाएं. इसके लिए, InterstitialAdGameObject.ShowIfLoaded() फ़ंक्शन को कॉल करें. नीचे दिए गए कोड में, सीन ट्रांज़िशन के बीच में अचानक दिखने वाला विज्ञापन दिखाने का उदाहरण दिया गया है.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

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

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

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

"इनाम वाला विज्ञापन देखें" बटन की स्थिति को मैनेज करना

यहां विज्ञापन प्लेसमेंट का इस्तेमाल करके, "इनाम वाला विज्ञापन देखें" बटन को चालू करने का तरीका बताया गया है.

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

Start() तरीके में, बटन की चालू स्थिति को बदलकर false करें. इससे बटन सीन से हट जाएगा.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

सीन में RewardedAdGameObject जोड़ें. इसके बाद, ड्रॉपडाउन से AdMob Demo Rewarded Ad विज्ञापन प्लेसमेंट चुनें.

RewardedAdGameObject इंस्पेक्टर में, कॉलबैक सेक्शन में जाकर, On Ad Loaded() में मौजूद + बटन पर क्लिक करें. इससे, इनाम वाला विज्ञापन लोड होने पर फ़ंक्शन को कॉल किया जा सकेगा.

पिछले चरण में जोड़े गए Button GameObject को खींचकर None (Object) फ़ील्ड में छोड़ें. ड्रॉपडाउन से कॉल किया जाने वाला कोई फ़ंक्शन चुनें. No Function > GameObject > SetActive(bool) पर क्लिक करें. इसके बाद, चेकबॉक्स पर क्लिक करें, ताकि यह true को पैरामीटर के तौर पर भेज सके (SetActive(true) को कॉल करता है).

इस कॉलबैक सेक्शन में, एक ऐसा इवेंट भी लिंक किया जा सकता है जिसे RewardedAd.OnUserEarnedReward इवेंट ट्रिगर होने पर कॉल किया जाएगा. ज़्यादा जानकारी के लिए, यह सेक्शन देखें.

इसके बाद, एक ऐसा बटन बनाएं जिस पर क्लिक करने से इनाम वाला विज्ञापन दिखे. बटन इंस्पेक्टर में मौजूद On Click() कॉलबैक सेक्शन में जाकर, + बटन पर क्लिक करें. इसके बाद, इनाम वाले विज्ञापन प्लेसमेंट के GameObject (इस उदाहरण में इसका नाम Rewarded Ad है) को None (Object) फ़ील्ड में खींचें और छोड़ें.

इसके बाद, RewardedAdGameObject.ShowIfLoaded() फ़ंक्शन को बटन के On Click() कॉलबैक से अटैच करें.

आखिर में, एसडीके को शुरू करना न भूलें. यहां दिया गया कोड स्निपेट, इस उदाहरण में इस्तेमाल किए गए सीन का पूरा कोड है:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

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

RewardedAdGameObject के लिए, इनाम वाले विज्ञापन के कॉलबैक को कॉन्फ़िगर करना

यहां इनाम वाले विज्ञापन प्लेसमेंट के लिए, इनाम वाले कॉलबैक को कॉन्फ़िगर करने का एक उदाहरण दिया गया है. इससे, कॉलबैक फ़ंक्शन कॉल किए जाने पर, उपयोगकर्ता को इनाम दिया जा सकता है.

नई स्क्रिप्ट बनाएं और एक ऐसा फ़ंक्शन तय करें जो Reward को पैरामीटर के तौर पर स्वीकार करे.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

सीन में मौजूद किसी भी GameObject (AdPlacement GameObject को छोड़कर) में RewardedTestScript स्क्रिप्ट अटैच करें. इस उदाहरण में, इसे MainCamera GameObject से अटैच किया गया है.

सीन में कोई RewardedAdGameObject जोड़ें. इसके बाद, RewardedAdGameObject इंस्पेक्टर में मौजूद Callbacks सेक्शन में जाकर, On User Earned Reward (Reward) पर मौजूद + बटन पर क्लिक करें. इससे, उपयोगकर्ता को इनाम मिलने पर फ़ंक्शन को कॉल किया जा सकेगा.

पिछले चरण में जोड़े गए Main Camera GameObject को None (Object) फ़ील्ड में खींचें और छोड़ें. ड्रॉपडाउन से कॉल करने के लिए कोई फ़ंक्शन चुनें. No Function > RewardedTestScript > OnUserEarnedReward पर क्लिक करें.

प्रोजेक्ट चलाने और इनाम वाला विज्ञापन देखने के बाद, विज्ञापन के साथ इंटरैक्ट करने पर इनाम मिलने के समय RewardedTestScript.OnUserEarnedReward() को चालू किया जाएगा.