AdMob+Firebase 101 Unity: सेटअप & Analytics की बुनियादी बातें

1. परिचय

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

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

Firebase के लिए Google Analytics, AdMob, और कई दूसरे कारगर और इस्तेमाल में आसान टूल की मदद से, डेटा के आधार पर ऐप्लिकेशन को बेहतर बनाना पहले से ज़्यादा आसान और बेहतर हो गया है. आज हम आपको शुरुआत करने का तरीका बताएंगे!

आपको क्या बनाना होगा

यह कोडलैब उन तीन कोडलैब में से पहला है जो आपको Awesome Drawings Quiz नाम का एक ऐप्लिकेशन बनाने में मदद करेगा. यह एक ऐसा गेम है जो खिलाड़ियों को ड्रॉइंग के नाम का अनुमान लगाने की सुविधा देता है. इस लेख में यह बताया जाएगा कि इनाम वाले विज्ञापनों और Firebase की सेवाओं को अपने गेम में कैसे शामिल किया जा सकता है.

इस कोडलैब में, ऐप्लिकेशन के कुछ अहम इवेंट रिकॉर्ड करने के लिए, आपको 'Firebase के लिए Google Analytics' को इंटिग्रेट करना होगा. साथ ही, आपको Firebase कंसोल में दिखाए गए ऐप्लिकेशन के आंकड़ों को पढ़ने का तरीका भी पता चलेगा.

आपको इनके बारे में जानकारी मिलेगी

  • अपने ऐप्लिकेशन में 'Firebase के लिए Google Analytics' सेटअप करने का तरीका
  • ऐप्लिकेशन इवेंट को रिकॉर्ड करने का तरीका
  • Firebase कंसोल में दिखाए गए ऐप्लिकेशन के आंकड़ों को पढ़ने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Unity 2018.4.4f1 या इसके बाद का वर्शन
  • Xcode 10 या उसके बाद का वर्शन (iOS का टारगेट बनाने के लिए)
  • Google खाता
  • अपने डिवाइस को कनेक्ट करने के लिए, यूएसबी केबल के साथ Android 5.0 या इसके बाद के वर्शन वाले टेस्ट डिवाइस या एवीडी(Android वर्चुअल डिवाइस) पर चलने वाला Android एम्युलेटर, जिसकी सिस्टम इमेज Play Store/Google API के साथ काम करती हो
  • iOS डिवाइस या iOS 8.0 या इसके बाद के वर्शन पर चलने वाला सिम्युलेटर

AdMob के साथ आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

Firebase के साथ अपने अनुभव के स्तर को आप कितनी रेटिंग देंगे?

शुरुआती इंटरमीडिएट कुशल

2. डेवलपमेंट एनवायरमेंट सेटअप करें

कोड डाउनलोड करना

इस कोडलैब के लिए सभी कोड डाउनलोड करने के लिए, नीचे दिया गया बटन क्लिक करें:

डाउनलोड की गई ZIP फ़ाइल को अनपैक करें. इससे admob-firebase-codelabs-unity-master नाम का रूट फ़ोल्डर खुल जाएगा.

...या कमांड लाइन से, GitHub रिपॉज़िटरी का क्लोन बनाएं.

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity

डेटा स्टोर करने की जगह में चार फ़ोल्डर इस तरह से शामिल होते हैं:

  • android_studio_folder.png101-base — इस कोडलैब में बनाया जाने वाला शुरुआती कोड.
  • android_studio_folder.png101-complete_and_102-base — इस कोडलैब के लिए पूरा कोड और 102 कोडलैब के लिए एक स्टार्टर.
  • android_studio_folder.png102 पूरा हो गया है — 102 कोडलैब के लिए कोड पूरा हो गया है.

ज़रूरी फ़ाइलें तैयार करना

बेहतरीन ड्रॉइंग क्विज़ में कई ओपन-सोर्स कोड इस्तेमाल किए जाते हैं, जो प्रोजेक्ट को कंपाइल और चलाने के लिए ज़रूरी होते हैं.

टर्मिनल खोलें और रिपॉज़िटरी की रूट डायरेक्ट्री पर जाएं. इसके बाद, प्रोजेक्ट में ज़रूरी फ़ाइलों को कॉपी करने के लिए, टर्मिनल से ./gradlew :prepareThirdPartyFiles (Windows पर gradlew.bat :prepareThirdPartyFiles) चलाएं.

स्टार्टर ऐप्लिकेशन को इंपोर्ट करें

Unity को लॉन्च करें और वेलकम स्क्रीन में "खोलें" को चुनें. इसके बाद, डाउनलोड किए गए कोड से 101-base डायरेक्ट्री चुनें.

अब आपका प्रोजेक्ट Unity में खुल जाएगा.

3. इनाम वाले वीडियो विज्ञापन की यूनिट सेटअप करें (ज़रूरी नहीं)

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

Android के लिए सेटअप

अपने खाते में एक नया AdMob ऐप्लिकेशन बनाने के लिए, कृपया नीचे दिए गए निर्देशों का पालन करें:

  1. AdMob Console पर जाएं.
  2. ऐप्लिकेशन मेन्यू में, "ऐप्लिकेशन जोड़ें" पर क्लिक करें.
  3. "क्या आपने अपना ऐप्लिकेशन Google Play या App Store पर पब्लिश किया है" पूछे जाने पर, जवाब "नहीं."
  4. ऐप्लिकेशन का नाम "बेहतरीन ड्रॉइंग क्विज़," रखें प्लैटफ़ॉर्म के तौर पर "Android" चुनें और "जोड़ें" पर क्लिक करें.

अपने खाते में AdMob ऐप्लिकेशन बनाने के बाद, नीचे दिए गए तरीके का पालन करके, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाएं.

  1. AdMob फ़्रंटएंड में, ऐप्लिकेशन मेन्यू पर क्लिक करें. इसके बाद, ऐप्लिकेशन की सूची से "बेहतरीन ड्रॉइंग क्विज़" चुनें.
  2. विज्ञापन यूनिट मेन्यू पर क्लिक करें. इसके बाद, नई इनाम वाले वीडियो विज्ञापन यूनिट बनाने के लिए, विज्ञापन यूनिट जोड़ें पर क्लिक करें.
  3. विज्ञापन फ़ॉर्मैट के लिए, इनाम वाले विज्ञापन को चुनें.

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. बनाने के बाद, आपको कुछ इस तरह के निर्देश दिखेंगे.

4bc1b3b341a5a81c.png

  1. Unity प्रोजेक्ट पर वापस जाएं. इसके बाद, पिछले चरण में बनाए गए AdMob ऐप्लिकेशन आईडी और विज्ञापन यूनिट आईडी के कॉन्स्टेंट को अपडेट करें.

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_ANDROID
        private const string APP_ID = APP_ID_ANDROID;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

iOS के लिए सेटअप

अपने खाते में एक नया AdMob ऐप्लिकेशन बनाने के लिए, कृपया नीचे दिए गए निर्देशों का पालन करें:

  1. AdMob Console पर जाएं.
  2. ऐप्लिकेशन मेन्यू में, "ऐप्लिकेशन जोड़ें" पर क्लिक करें.
  3. "क्या आपने अपना ऐप्लिकेशन Google Play या App Store पर पब्लिश किया है" पूछे जाने पर, जवाब "नहीं."
  4. ऐप्लिकेशन का नाम "बेहतरीन ड्रॉइंग क्विज़," रखें प्लैटफ़ॉर्म के तौर पर "iOS" चुनें और "जोड़ें" पर क्लिक करें.

अपने खाते में AdMob ऐप्लिकेशन बनाने के बाद, नीचे दिए गए तरीके का पालन करके, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाएं.

  1. AdMob फ़्रंटएंड में, ऐप्लिकेशन मेन्यू पर क्लिक करें. इसके बाद, ऐप्लिकेशन की सूची से "बेहतरीन ड्रॉइंग क्विज़" चुनें.
  2. विज्ञापन यूनिट मेन्यू पर क्लिक करें. इसके बाद, नई इनाम वाले वीडियो विज्ञापन यूनिट बनाने के लिए, विज्ञापन यूनिट जोड़ें पर क्लिक करें.
  3. विज्ञापन फ़ॉर्मैट के लिए, इनाम वाले विज्ञापन को चुनें.

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. बनाने के बाद, आपको कुछ इस तरह के निर्देश दिखेंगे.

4bc1b3b341a5a81c.png

  1. Unity प्रोजेक्ट पर वापस जाएं. इसके बाद, पिछले चरण में बनाए गए AdMob ऐप्लिकेशन आईडी और विज्ञापन यूनिट आईडी के कॉन्स्टेंट को अपडेट करें.

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_IOS
        private const string APP_ID = APP_ID_IOS;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

4. Google मोबाइल विज्ञापन Unity प्लगिन जोड़ें

प्लगिन इंपोर्ट करें

Unity ऐप्लिकेशन पर AdMob विज्ञापन दिखाने के लिए, आपको प्रोजेक्ट में Google Mobile Ads Unity प्लगिन जोड़ना होगा.

  1. Google Mobile Ads Unity प्लगिन 3.18.1 पैकेज डाउनलोड करें. (ध्यान दें कि शायद यह कोडलैब, प्लगिन के किसी दूसरे वर्शन के साथ काम न करे)
  2. बेहतरीन ड्रॉइंग क्विज़ Unity प्रोजेक्ट में. प्रोजेक्ट में, ऐसेट > पैकेज इंपोर्ट करें > पसंद के मुताबिक पैकेज.
  3. डाउनलोड किए गए प्रोजेक्ट में GoogleMobileAds.unitypackage इंपोर्ट करें.

AdMob का ऐप्लिकेशन आईडी कॉन्फ़िगर करना

Unity एडिटर में, ऐसेट > Google मोबाइल विज्ञापन > सेटिंग पर क्लिक करें.

44fc84fe88235c1f.png

Google AdMob सेक्शन में चालू किया गया चेकबॉक्स पर क्लिक करके, AdMob को चालू करें. फिर, नीचे बताए गए तरीके से AdMob ऐप्लिकेशन का आईडी डालें:

  • Android: ca-app-pub-3940256099942544~3048611032
  • iOS: ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

5. Firebase प्रोजेक्ट सेट अप करें

Firebase कंसोल से नया प्रोजेक्ट बनाना

  1. Firebase कंसोल पर जाएं.
  2. प्रोजेक्ट जोड़ें को चुनें और अपने प्रोजेक्ट को "बेहतरीन ड्रॉइंग क्विज़" नाम दें.

Unity ऐप्लिकेशन को जोड़ना

  1. अपने नए प्रोजेक्ट की खास जानकारी वाली स्क्रीन पर, Firebase को अपने Unity ऐप्लिकेशन में जोड़ें पर क्लिक करें.
  2. iOS ऐप्लिकेशन के तौर पर रजिस्टर करने के लिए उपलब्ध चेकबॉक्स पर सही का निशान लगाएं.
  3. iOS बंडल आईडी को इस तरह डालें: com.codelab.awesomedrawingquiz.unity
  4. ऐप्लिकेशन को इस तरह से कोई दूसरा नाम दें: Awesome Drawings Quiz (iOS पर Unity)
  5. Android ऐप्लिकेशन के तौर पर रजिस्टर करें चेकबॉक्स पर सही का निशान लगाएं.
  6. Android पैकेज का नाम इस तरह डालें: com.codelab.awesomedrawingquiz.unity
  7. ऐप्लिकेशन को इस तरह से कोई दूसरा नाम दें: Awesome ड्रॉइंग क्विज़ (Android पर Unity)
  8. Android और iOS, दोनों तरह के ऐप्लिकेशन रजिस्टर करने के लिए, ऐप्लिकेशन रजिस्टर करें चुनें.

Unity प्रोजेक्ट में Firebase कॉन्फ़िगरेशन फ़ाइलें जोड़ना

इसके बाद, आपको एक स्क्रीन दिखेगी, जहां से आप एक कॉन्फ़िगरेशन फ़ाइल डाउनलोड कर सकते हैं. इसमें आपके ऐप्लिकेशन के लिए सभी ज़रूरी Firebase मेटाडेटा होंगे. google-service.json और GoogleService-Info.plist फ़ाइल डाउनलोड करें. इसके बाद, दोनों को Unity प्रोजेक्ट में android_studio_folder.pngAssets फ़ोल्डर में ले जाएं.

331c165d80ba105e.png

Firebase Analytics SDK टूल जोड़ें

  1. Firebase Unity SDK 5.5.0 डाउनलोड करें और इसे किसी सुविधाजनक जगह पर अनज़िप करें.
  2. बेहतरीन ड्रॉइंग क्विज़ Unity प्रोजेक्ट खोलें, ऐसेट > पैकेज इंपोर्ट करें > पसंद के मुताबिक पैकेज.
  3. ज़िप नहीं किए गए SDK टूल से, रिमोट कॉन्फ़िगरेशन SDK टूल (dotnet4/FirebaseAnalytics.unitypackage) इंपोर्ट करें.
  4. Unity पैकेज विंडो को इंपोर्ट करें में, इंपोर्ट करें पर क्लिक करें.

6. AdMob को Firebase प्रोजेक्ट से लिंक करना

नीचे दिए गए तरीके से अपने ऐप्लिकेशन को Firebase से जोड़ें.

  1. https://apps.admob.com पर जाकर, अपने AdMob खाते में साइन इन करें.
  2. साइडबार में, 'ऐप्लिकेशन' पर क्लिक करें.
  3. "बेहतरीन ड्रॉइंग क्विज़" चुनें. अगर आपको हाल के ऐप्लिकेशन की सूची में यह नहीं दिखता है, तो 'सभी ऐप्लिकेशन देखें' पर क्लिक करके, उन सभी ऐप्लिकेशन की सूची देखी जा सकती है जिन्हें आपने AdMob में जोड़ा है.
  4. साइडबार में ऐप्लिकेशन की सेटिंग पर क्लिक करें.
  5. Firebase से लिंक करें पर क्लिक करें.
  6. "किसी मौजूदा Firebase प्रोजेक्ट से लिंक करें और नया Firebase ऐप्लिकेशन बनाएं" विकल्प चुनें. इसके बाद, ड्रॉपडाउन मेन्यू से "बहुत बढ़िया ड्रॉइंग क्विज़" प्रोजेक्ट चुनें.
  7. "जारी रखें" बटन पर क्लिक करने पर, आपको "लिंक किया गया" मैसेज दिखेगा. प्रोसेस पूरी करने के लिए, "हो गया" बटन पर क्लिक करें.

AdMob ऐप्लिकेशन को Firebase प्रोजेक्ट से लिंक करने के बाद, आपको AdMob और Firebase कंसोल, दोनों पर कुछ अन्य सुविधाएं इस तरह मिलेंगी:

रेवेन्यू कार्ड (AdMob)

रेवेन्यू कार्ड पर जाकर, एक ही जगह पर रेवेन्यू के सभी संभावित तरीकों की जानकारी देखी जा सकती है. रेवेन्यू के ऐसे सोर्स के बारे में जानें जिनका इस्तेमाल किया जा सकता है:

  • AdMob (अनुमानित)
  • मीडिएशन वाले विज्ञापन नेटवर्क (निगरानी में रखे गए)
  • इन-ऐप्लिकेशन खरीदारी
  • ई-कॉमर्स प्लैटफ़ॉर्म पर खरीदारी

10fe118249e11150.png

उपयोगकर्ता मेट्रिक कार्ड (AdMob)

उपयोगकर्ता मेट्रिक कार्ड से, यह देखा जा सकता है कि विज्ञापन अनुभव में बदलाव करने से, उपयोगकर्ता के व्यवहार पर क्या असर पड़ सकता है.

5f56366f1b31d4a1.png

इनाम वाले विज्ञापनों की रिपोर्ट (AdMob)

इनाम वाले विज्ञापनों की रिपोर्ट में कई तरह की मेट्रिक होती हैं. इनसे पब्लिशर को यह समझने में मदद मिलती है कि उपयोगकर्ता, इनाम वाले विज्ञापनों के साथ कैसे इंटरैक्ट कर रहे हैं.

658a2868777690ea.png

कुल रेवेन्यू कार्ड (Firebase)

AdMob ऐप्लिकेशन को Firebase से लिंक करने के बाद, Firebase डैशबोर्ड पर मौजूद कुल रेवेन्यू कार्ड में, इन-ऐप्लिकेशन खरीदारी और ई-कॉमर्स खरीदारी के साथ-साथ, AdMob से हुई आय भी दिखेगी.

98cb283977b023a.png

विज्ञापन इवेंट की रिपोर्टिंग (Firebase)

विज्ञापन से जुड़े इवेंट (क्लिक, इंप्रेशन, और इनाम वाले इवेंट) अपने-आप इकट्ठा होते हैं और 'Firebase के लिए Google Analytics' में इस्तेमाल के लिए उपलब्ध होते हैं.

bf77bd8c00c1441b.png

7. प्रोजेक्ट चलाएं

प्रोजेक्ट को कंपाइल और रन करने के बाद, ऐप्लिकेशन शुरू होने पर आपको यह स्क्रीन दिखेगी.

f5fbf4565c5d8647.png

‘गेम शुरू करें’ पर क्लिक करने के बाद, आपको स्क्रीन पर एक ड्रॉइंग दिखेगी. आपका मिशन, सबसे ऊपर दिखाए गए संकेत का इस्तेमाल करके, ड्रॉइंग के नाम का अनुमान लगाना है. इससे, ड्रॉइंग के पहले अक्षर और नाम की लंबाई का अनुमान लगाया जा सकता है.

bbdf4d23fb08a519.png ad82d7e657945c4d.png

अगर आपको नहीं पता कि ड्रॉइंग का नाम क्या है, तो ‘अभी नहीं’ बटन पर क्लिक करके लेवल को स्किप किया जा सकता है.

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

8c33687361f83a13.png b048d6587c10e9df.png

8. ऐप्लिकेशन इवेंट जोड़ें

बेहतरीन ड्रॉइंग क्विज़ में उपयोगकर्ता के सफ़र को गहराई से समझने के लिए,आपको कुछ कस्टम इवेंट परिभाषित करने होंगे. ये इवेंट गेम में उपयोगकर्ता के व्यवहार को इस तरह ट्रैक करते हैं:

इवेंट का नाम

ट्रिगर किया गया...

पैरामीटर

game_start

जब कोई उपयोगकर्ता नया गेम शुरू करता है

कोई नहीं

level_start

जब कोई उपयोगकर्ता किसी स्टेज में एक नया लेवल (एक नया ड्रॉइंग क्विज़) शुरू करता है. (एक स्टेज में छह लेवल होते हैं)

level_name

level_wrong_answer

जब कोई उपयोगकर्ता गलत जवाब सबमिट करता है

level_name

ad_reward_prompt

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

ad_unit_id

ad_reward_impression

जब कोई उपयोगकर्ता, इनाम वाले वीडियो विज्ञापन को देखना शुरू करता है

ad_unit_id

level_success

जब कोई उपयोगकर्ता सही जवाब सबमिट करता है (एक लेवल हटाता है)

level_name, number_of_attempts, खुलने_समय_sec, hint_used

level_fail

जब कोई उपयोगकर्ता किसी लेवल को स्किप करता है

level_name, number_of_attempts, खुलने_समय_sec, hint_used

game_complete

जब गेम खत्म हो जाए

number_of_correct_answers

हर इवेंट से जुड़े हर पैरामीटर की जानकारी यहां दी गई है:

इवेंट का नाम

पैरामीटर का नाम

जानकारी

level_start

level_name

लेवल में दिखाई गई ड्रॉइंग का नाम (उदाहरण के लिए, "केला")

level_wrong_answer

level_name

लेवल में दिखाई गई ड्रॉइंग का नाम (उदाहरण के लिए, "केला")

ad_reward_prompt

ad_unit_id

इनाम वाले वीडियो विज्ञापन दिखाने के लिए इस्तेमाल की जाने वाली विज्ञापन यूनिट का आईडी

ad_reward_impression

ad_unit_id

इनाम वाले वीडियो विज्ञापन दिखाने के लिए इस्तेमाल की जाने वाली विज्ञापन यूनिट का आईडी

level_success

level_name

लेवल में दिखाई गई ड्रॉइंग का नाम (उदाहरण के लिए, "केला")

level_success

number_of_attempts

किसी लेवल को पार करने के लिए की गई कोशिशों की संख्या

level_success

elapsed_time_sec

किसी लेवल को पार करने में बीता समय, सेकंड में

level_success

hint_used

क्या उपयोगकर्ता ने लेवल पूरा करने के लिए संकेत (इनाम वाला वीडियो विज्ञापन देखा) का इस्तेमाल किया या नहीं (1: संकेत का इस्तेमाल किया / 0: बिना संकेत के किसी लेवल को पार किया)

level_fail

level_name

लेवल में दिखाई गई ड्रॉइंग का नाम (उदाहरण के लिए, "केला")

level_fail

number_of_attempts

किसी लेवल को पार करने के लिए की गई कोशिशों की संख्या

level_fail

elapsed_time_sec

किसी लेवल को पार करने में बीता समय, सेकंड में

level_fail

hint_used

क्या उपयोगकर्ता ने लेवल पूरा करने के लिए संकेत (इनाम वाला वीडियो विज्ञापन देखा) का इस्तेमाल किया या नहीं (1: संकेत का इस्तेमाल किया / 0: बिना संकेत के किसी लेवल को पार किया)

game_complete

number_of_correct_answers

गेम में पूरे किए गए लेवल की संख्या

कस्टम इवेंट लॉग करने के लिए, हेल्पर क्लास बनाना

आंकड़ों के इवेंट को आसानी से लॉग करने के लिए, आपको एक हेल्पर क्लास बनानी होगी, ताकि कस्टम इवेंट मैनेज किए जा सकें.

सबसे पहले, Assets/Scripts फ़ोल्डर में एक नया फ़ोल्डर बनाएं और उसे Analytics नाम दें. इसके बाद, एक नई C# स्क्रिप्ट बनाएं और Analytics फ़ोल्डर में इसे QuizAnalytics.cs नाम दें.

यहां दिए गए कोड को QuizAnalytics.cs फ़ाइल में जोड़ें.

Analytics/QuizAnalytics.cs

using Firebase.Analytics;

namespace AwesomeDrawingQuiz.Analytics {

    public class QuizAnalytics {

        private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";

        private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";

        private const string EVENT_LEVEL_FAIL = "level_fail";

        private const string EVENT_LEVEL_SUCCESS = "level_success";

        private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";

        private const string EVENT_GAME_START = "game_start";

        private const string EVENT_GAME_COMPLETE = "game_complete";

        private const string PARAM_AD_UNIT_ID = "ad_unit_id";

        private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";

        private const string PARAM_HINT_USED = "hint_used";

        private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";

        private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";

        public const string SCREEN_MAIN = "main";

        public const string SCREEN_GAME = "game";

        public static void LogGameStart() {
            FirebaseAnalytics.LogEvent(EVENT_GAME_START);
        }

        public static void LogLevelStart(string levelName) {
            FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogLevelWrongAnswer(string levelName) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogAdRewardPrompt(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogAdRewardImpression(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogLevelSuccess(
            string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogLevelFail(
            string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogGameComplete(int numberOfCorrectAnswers) {
            FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE, 
                PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
        }

        public static void SetScreenName(string screenName) {
            FirebaseAnalytics.SetCurrentScreen(screenName, null);
        }
    }
}

गेम में Analytics से जुड़े इवेंट लॉग करना

Game.cs फ़ाइल को Assets/Scripts/Scenes फ़ोल्डर में खोलें. AwesomeDrawingQuiz.Analytics नेमस्पेस में मौजूद QuizAnalytics क्लास का इस्तेमाल करने के लिए, इस्तेमाल करने का निर्देश इस तरह जोड़ें.

सीन/Game.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

इसके बाद, Start() फ़ंक्शन में, मौजूदा स्क्रीन का नाम बदलने के लिए QuizAnalytics.SetScreenName() को कॉल करें. साथ ही, QuizAnalytics.LogGameStart() पर कॉल करके बताएं कि गेम शुरू हो गया है.

सीन/Game.cs

void Start () {
    // TODO: Log screen name (101)
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);

    ...

    SetHintButtonEnabled(false);

    // TODO: Log game_start event (101)
    QuizAnalytics.LogGameStart();
    
    ...
}

इसके बाद, कॉलबैक फ़ंक्शन में, कस्टम इवेंट लॉग करने के लिए कॉल इस तरह जोड़ें:

सीन/Game.cs

public void OnClickHint() {
    // TODO: Log ad_reward_prompt event (101)
    QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);

    ...
}

...
  
public void OnAdStarted(object sender, EventArgs args) {
    // TODO: Log ad_reward_impression event (101)
    QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}

...

public void OnGameOver(object sender, GameOverEventArgs args) {
    // TODO: Log game_complete event (101)
    QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);

    ...
}

public void OnLevelCleared(object sender, LevelClearEventArgs args) {
    // TODO: Log level_success event (101)
    QuizAnalytics.LogLevelSuccess(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);

    ...
}

public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
    // TODO: Log level_fail event (101)
    QuizAnalytics.LogLevelFail(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}

public void OnNewLevel(object sender, NewLevelEventArgs args) {
    // TODO: Log level_start event (101)
    QuizAnalytics.LogLevelStart(args.Drawing.word);

    ...
}

public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
    // TODO: Log level_wrong_answer event (101)
    QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);

    ...
}

आखिर में, Main.cs फ़ाइल को Assets/Scripts/Scenes फ़ोल्डर में अपडेट करें. Firebase SDK टूल में किसी भी तरीके को कॉल करने से पहले, आपको यह पक्का कर लेना चाहिए कि Firebase तैयार है या नहीं.

सीन/Main.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
    public class Main : MonoBehaviour {

        ...

        void Start () {
            Screen.sleepTimeout = SleepTimeout.SystemSetting;

            #if UNITY_ANDROID
            // Disable 'Start a game' button until
            // Firebase dependencies are ready to use on the Android
            buttonStartGame.interactable = false;

            // TODO: Check Google Play Services on Android (101)
            // Check Google Play Services on Android device is up to date
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available) {
                    Debug.Log("All Firebase services are available");
                    
                    // TODO: Set screen name (101)
                    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
                } else {
                    throw new System.InvalidOperationException(System.String.Format(
                        "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                }
            }).ContinueWith(task => {
                // Enable 'Start a game' button
                UnityMainThreadDispatcher.Instance()
                    .Enqueue(() => buttonStartGame.interactable = true);
            });
            #else
            
            // TODO: Set screen name (101)
            QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
            #endif
        }

        ...
    }
}   

9. आंकड़ों के इवेंट डीबग करना

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

यह डेवलपमेंट के इंस्ट्रुमेंटेशन चरण के दौरान, पुष्टि करने के लिए बहुत काम का होता है. साथ ही, इससे आपको अपने आंकड़ों को लागू करने में होने वाली गड़बड़ियों और गलतियों का पता लगाने में मदद मिल सकती है.

Android डिवाइस पर डीबग मोड चालू करना

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

सबसे पहले, Android Studio में टर्मिनल टूल खोलें. यह सबसे नीचे मौजूद टूलबार में होता है.

c8dc1b4f08a224b8.png

इसके बाद, नीचे दिए गए निर्देश को एक्ज़ीक्यूट करें (पक्का करें कि टेस्ट Android डिवाइस आपके कंप्यूटर से कनेक्ट हो या Android Emulator चल रहा हो):

adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz

मौजूदा व्यवहार तब तक बना रहेगा, जब तक आप नीचे दिए गए निर्देश को लागू करके साफ़ तौर पर डीबग मोड बंद नहीं कर देते:

adb shell setprop debug.firebase.analytics.app .none.

iOS पर डीबग मोड चालू करना

अपने डेवलपमेंट डिवाइस पर Analytics डीबग मोड चालू करने के लिए, Xcode में यह कमांड लाइन आर्ग्युमेंट डालें:

-FIRDebugEnabled

मौजूदा व्यवहार तब तक बना रहेगा, जब तक आप नीचे दिए गए निर्देश को बता कर साफ़ तौर से डीबग मोड बंद नहीं कर देते:

-FIRDebugDisabled

DebugView की मदद से Analytics इवेंट डीबग करना

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

827059255d09ac00.png

किसी इवेंट के नाम पर क्लिक करके, उसके बारे में ज़्यादा जानकारी देखी जा सकती है. उदाहरण के लिए, इस स्क्रीनशॉट में level_start इवेंट से जुड़ी पैरामीटर की जानकारी दिखाई गई है.

475db00d05d03ab8.png

ज़्यादा जानकारी के लिए, कृपया DebugView सहायता केंद्र का लेख देखें.

10. पैरामीटर रिपोर्टिंग चालू करें

'Firebase के लिए Google Analytics' डिफ़ॉल्ट रूप से, इवेंट की कुल संख्या इकट्ठा करेगा. हालांकि, आपको हर उस इवेंट पैरामीटर के लिए कस्टम पैरामीटर की रिपोर्टिंग अलग से चालू करनी होगी जिसमें आपकी दिलचस्पी है. इसके चालू होने के बाद, 'Firebase के लिए Google Analytics', कस्टम पैरामीटर के आंकड़े दिखाने के लिए अतिरिक्त कार्ड दिखाएगा.

किसी इवेंट के लिए कस्टम पैरामीटर रजिस्टर करने के लिए:

  1. Firebase कंसोल पर जाएं और वह बेहतरीन ड्रॉइंग क्विज़ प्रोजेक्ट चुनें जिसे आपने पहले बनाया था.
  2. नेविगेशन मेन्यू में, इवेंट पर क्लिक करें.
  1. जिस इवेंट में आपको बदलाव करना है उसकी लाइन में, 73afe611adf58774.png पर क्लिक करें> पैरामीटर रिपोर्टिंग में बदलाव करें.

aad40de06ee0c3ad.png

  1. पैरामीटर का नाम डालें फ़ील्ड में उस पैरामीटर का नाम डालें जिसे आप रजिस्टर करना चाहते हैं.

ध्यान दें: अगर कोई मैच नहीं मिलता है, तो पैरामीटर का नाम डालें. इसके बाद, जोड़ें पर क्लिक करें.e066c761aae4797f.png 5. यहां दिया गया टेबल देखें और टाइप फ़ील्ड को Text या Number पर सेट करें. संख्या वाले पैरामीटर के लिए, पक्का करें कि आपने मेज़रमेंट की इकाई फ़ील्ड भी सेट किया हो. 6. सेटअप पूरा करने के लिए, सेव करें बटन पर क्लिक करें.

नीचे दिए गए हर इवेंट के लिए, पैरामीटर की रिपोर्टिंग चालू करें.

इवेंट का नाम

पैरामीटर का नाम

पैरामीटर का टाइप

मेज़रमेंट की यूनिट

level_start

level_name

टेक्स्ट

लागू नहीं

level_wrong_answer

level_name

टेक्स्ट

लागू नहीं

level_success

level_name

टेक्स्ट

लागू नहीं

level_success

number_of_attempts

नंबर

स्टैंडर्ड मोड

level_success

elapsed_time_sec

नंबर

सेकंड

level_success

hint_used

नंबर

स्टैंडर्ड मोड

level_fail

level_name

टेक्स्ट

लागू नहीं

level_fail

number_of_attempts

नंबर

स्टैंडर्ड मोड

level_fail

elapsed_time_sec

नंबर

सेकंड

level_fail

hint_used

नंबर

स्टैंडर्ड मोड

game_complete

number_of_correct_answers

नंबर

स्टैंडर्ड मोड

यहां दिए गए उदाहरण में, level_success इवेंट के लिए कस्टम पैरामीटर रिपोर्टिंग का सेटअप दिखाया गया है:

6d569c8c27df2914.png

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

d1a37589d54bca6b.png

11. इवेंट रिपोर्ट से अहम जानकारी पाना

आपने गेम में कुछ इवेंट जोड़े हैं. इसलिए, आपको उपयोगकर्ता के व्यवहार से जुड़े सवालों के जवाब मिल जाने चाहिए. यहां कुछ अहम जानकारी दी गई है, जो आपको Firebase इवेंट रिपोर्ट से मिल सकती है.

किस लेवल पर गलत जवाबों की संख्या सबसे ज़्यादा है?

इस सवाल का जवाब देने के लिए, आपको यह पता चलेगा कि हर लेवल के साथ कितने level_wrong_answer इवेंट ट्रिगर हुए.

इवेंट की रिपोर्ट में, level_wrong_answer पर क्लिक करें. level_wrong_answer इवेंट रिपोर्ट में, level_name कार्ड खोजें. आपको उस कार्ड पर level_name पैरामीटर से जुड़ी वैल्यू इस तरह दिखेंगी.

25da426bbc0c612c.png

ऊपर दिए गए स्क्रीनशॉट के हिसाब से, यह आसानी से पता लगाया जा सकता है कि क्षितिज में गलत जवाबों की संख्या सबसे ज़्यादा है. इसका मतलब है कि अन्य लेवल की तुलना में यह उपयोगकर्ताओं के लिए मुश्किल है.

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

किसी लेवल को पार करने के लिए औसतन कितनी बार कोशिश की गई?

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

आपने level_success इवेंट में, number_of_attempts पैरामीटर पर पैरामीटर रिपोर्टिंग की सुविधा चालू की है. इसलिए, उस पैरामीटर की पूरी जानकारी वाली मेट्रिक देखी जा सकती हैं.

इवेंट की रिपोर्ट में, level_success इवेंट पर क्लिक करें. level_success इवेंट रिपोर्ट में, number_of_attemps कार्ड खोजें. आपको उस कार्ड पर कोशिशों की औसत संख्या इस तरह दिखेगी:

43de290f9f1a0ac9.png

यहां दी गई अहम जानकारी का इस्तेमाल करके, गेम की कठिनाई का लेवल औसतन ऑप्टिमाइज़ किया जा सकता है. उदाहरण के लिए, अगर हर बार कोशिश करने पर एक ही बार में कोशिश की जाती है, तो ऐसे में खेल को थोड़ा मुश्किल बनाएं.

क्या उपयोगकर्ताओं ने संकेत पाकर सवाल को हल करने की कोशिश की, भले ही वे कोई लेवल पार नहीं कर पाए?

जब कोई उपयोगकर्ता किसी लेवल को छोड़कर आगे बढ़ने का फ़ैसला करता है, तो level_fail इवेंट ट्रिगर होता है. उपयोगकर्ता को यह फ़ैसला लेने की कई वजहें हो सकती हैं.

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

इवेंट की रिपोर्ट में, level_fail इवेंट पर क्लिक करें. level_fail इवेंट रिपोर्ट में, hint_used कार्ड खोजें. आपको hint_used इवेंट पैरामीटर की औसत संख्या दिखेगी. ध्यान दें कि जब किसी संकेत का इस्तेमाल किया जाता है, तो उसे 1 पर सेट किया जाता है, जबकि इसे 0 पर सेट किया जाता है. ऐसा तब होता है, जब किसी संकेत का इस्तेमाल नहीं किया गया हो.

313814372cd7c8a4.png

अगर hint_used कार्ड पर नंबर 0 के आस-पास हैं, तो इससे पता चलता है कि इनाम (संकेत) लोगों के लिए ज़्यादा आकर्षक नहीं है. साथ ही, इनाम वाले वीडियो विज्ञापन से मिलने वाले रेवेन्यू को बढ़ाने का मौका नहीं मिल पाएगा.

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

हर गेम में औसतन कितने लेवल पार किए गए?

शानदार ड्रॉइंग क्विज़ में हर गेम के लिए कुल 6 लेवल होते हैं. जब उपयोगकर्ता छह लेवल पूरे कर लेता है, तो इससे कोई फ़र्क़ नहीं पड़ता कि उपयोगकर्ता ने हर लेवल में पास किया या उसे पूरा नहीं किया. number_of_correct_answers के साथ पैरामीटर के तौर पर game_complete इवेंट ट्रिगर होता है.

number_of_correct_answers से पता चलता है कि उपयोगकर्ता ने कितने लेवल पार किए (सही जवाब दिया है). आप number_of_correct_answers पैरामीटर की मेट्रिक को देखकर जवाब पा सकते हैं.

इवेंट की रिपोर्ट में, game_complete इवेंट पर क्लिक करें. game_complete इवेंट रिपोर्ट में, number_of_correct_answers कार्ड ढूंढें. आपको number_of_correct_answers इवेंट पैरामीटर की औसत संख्या दिखेगी.

d9eeaa019d1bceb4.png

अगर मंज़ूर किए गए लेवल की औसत संख्या बहुत कम है, तो आपको गेम का क्रम बदलने पर विचार करना चाहिए, ताकि किसी लेवल को हराने में लोगों की मदद की जा सके, ताकि वे अपनी दिलचस्पी खोने के बिना आपका गेम खेलना जारी रख सकें.

12. सब हो गया!

आपने AdMob+Firebase 101 Unity कोडलैब पूरा कर लिया है. इस कोडलैब के लिए पूरा कोड पाने के लिए, android_studio_folder.png101-complete_and_102-base फ़ोल्डर पर जाएं.

AdMob+Firebase कोडलैब (कोड बनाना सीखना) के अगले हिस्से में, आपको ऐप्लिकेशन इवेंट फ़्लो को विज़ुअलाइज़ करने के लिए फ़नल का इस्तेमाल करने का तरीका बताया जाएगा. साथ ही, इसमें बताया गया है कि ऐप्लिकेशन को अपडेट किए बिना गेम में पैरामीटर वैल्यू को ऑप्टिमाइज़ करने के लिए, रिमोट कॉन्फ़िगरेशन और A/B टेस्टिंग का इस्तेमाल कैसे किया जा सकता है.