1. परिचय
विज्ञापन, आपके ऐप्लिकेशन के उपयोगकर्ता अनुभव का एक अहम हिस्सा होते हैं. विज्ञापनों को सही तरीके से लागू करने से, ऐप्लिकेशन के कुल अनुभव को बेहतर बनाने में मदद मिल सकती है. इससे उपयोगकर्ता को बनाए रखने और उनकी दिलचस्पी बढ़ाने में भी मदद मिलती है. उदाहरण के लिए, इनाम वाले विज्ञापनों की मदद से, वीडियो विज्ञापन देखने वाले उपयोगकर्ताओं को ऐप्लिकेशन में इस्तेमाल होने वाली मुद्रा या आइटम इनाम के तौर पर दिए जा सकते हैं. इससे उपयोगकर्ता, गेम में नई ऊंचाइयों तक पहुंच सकते हैं. ऐसा न होने पर, वे गेम में आगे नहीं बढ़ पाते और गेम छोड़ देते.
हालांकि, विज्ञापन दिखाने से जुड़ा बेहतरीन अनुभव देना आसान नहीं है. आपके मन में ये सवाल हो सकते हैं: इन विज्ञापनों को कितनी बार दिखाना चाहिए? आपको उन्हें कब और कहां दिखाना चाहिए? पुरस्कार क्या होना चाहिए? माफ़ करें, इसका जवाब हर ऐप्लिकेशन और हर प्लेसमेंट के हिसाब से अलग-अलग होता है. इस सवाल का कोई तय जवाब नहीं है.
Firebase, Google Analytics for Firebase, AdMob, और कई अन्य शक्तिशाली टूल उपलब्ध कराता है. इनका इस्तेमाल करना आसान है. इनकी मदद से, डेटा के आधार पर अपने ऐप्लिकेशन को बेहतर बनाना अब ज़्यादा आसान और व्यवस्थित हो गया है. आज हम आपको इसका इस्तेमाल शुरू करने का तरीका बताएंगे!
आपको क्या बनाने को मिलेगा
यह कोडलैब, तीन कोडलैब की सीरीज़ का पहला कोडलैब है. इसमें आपको Awesome Drawing Quiz नाम का ऐप्लिकेशन बनाने के बारे में बताया जाएगा. यह एक ऐसा गेम है जिसमें खिलाड़ियों को ड्रॉइंग का नाम गेस करना होता है. इससे आपको यह पता चलेगा कि अपने गेम में इनाम वाले विज्ञापन और Firebase की सेवाओं को कैसे शामिल किया जा सकता है.
इस कोडलैब में, कुछ अहम ऐप्लिकेशन इवेंट रिकॉर्ड करने के लिए, Google Analytics for Firebase को इंटिग्रेट किया जाएगा. साथ ही, आपको यह भी पता चलेगा कि Firebase कंसोल में दिखाए गए ऐप्लिकेशन के आंकड़ों को कैसे पढ़ा जाता है.
|
|
आपको क्या सीखने को मिलेगा
- अपने ऐप्लिकेशन में Google Analytics for Firebase को कैसे सेट अप करें
- ऐप्लिकेशन के इवेंट रिकॉर्ड करने का तरीका
- Firebase कंसोल में दिखाए गए ऐप्लिकेशन के आंकड़े पढ़ने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- Unity 2018.4.4f1 या इसके बाद का वर्शन
- iOS के लिए टारगेट बनाने के लिए, Xcode 10 या इसके बाद का वर्शन
- Google खाता
- Android 5.0 या इसके बाद के वर्शन वाला टेस्ट डिवाइस. साथ ही, डिवाइस को कनेक्ट करने के लिए यूएसबी केबल या Play Store/Google API के साथ काम करने वाली सिस्टम इमेज के साथ AVD(Android वर्चुअल डिवाइस) चलाने वाला Android Emulator
- iOS 8.0 या उसके बाद के वर्शन पर चलने वाला iOS डिवाइस या सिम्युलेटर
AdMob इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?
Firebase इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?
2. डेवलपमेंट एनवायरमेंट सेट अप करना
कोड डाउनलोड करें
इस कोडलैब के लिए, पूरा कोड डाउनलोड करने के लिए, इस बटन पर क्लिक करें:
डाउनलोड की गई ज़िप फ़ाइल को अनपैक करें. इससे admob-firebase-codelabs-unity-master नाम का रूट फ़ोल्डर अनपैक हो जाएगा.
...या कमांड लाइन से GitHub रिपॉज़िटरी का क्लोन बनाएं.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
इस रिपॉज़िटरी में चार फ़ोल्डर हैं. ये फ़ोल्डर इस तरह हैं:
101-base — यह शुरुआती कोड है, जिसे आपको इस कोडलैब में बनाना है.
101-complete_and_102-base — इस कोडलैब के लिए पूरा किया गया कोड और 102 कोडलैब के लिए स्टार्टर.
102-complete — 102 कोडलैब के लिए पूरा किया गया कोड.
ज़रूरी फ़ाइलें तैयार करना
Awesome Drawing Quiz में कई ओपन-सोर्स कोड का इस्तेमाल किया जाता है. प्रोजेक्ट को कंपाइल और चलाने के लिए, इन कोड का इस्तेमाल करना ज़रूरी है.
टर्मिनल खोलें और रिपॉज़िटरी की रूट डायरेक्ट्री पर जाएं. इसके बाद, ज़रूरी फ़ाइलों को प्रोजेक्ट में कॉपी करने के लिए, टर्मिनल से ./gradlew :prepareThirdPartyFiles (Windows पर gradlew.bat :prepareThirdPartyFiles) चलाएं.
स्टार्टर ऐप्लिकेशन इंपोर्ट करना
Unity लॉन्च करें. इसके बाद, वेलकम स्क्रीन में "Open" को चुनें. इसके बाद, डाउनलोड किए गए कोड से 101-base डायरेक्ट्री चुनें.
अब आपके पास Unity में प्रोजेक्ट खुला होना चाहिए.
3. इनाम वाले वीडियो विज्ञापन की यूनिट सेट अप करना (ज़रूरी नहीं)
स्टार्टर ऐप्लिकेशन में, आपकी सुविधा के लिए इनाम वाले वीडियो विज्ञापन की यूनिट पहले से ही शामिल होती है. अगर आपको अपने AdMob खाते में नया खाता नहीं बनाना है, तो इस चरण को छोड़ा जा सकता है.
Android के लिए सेटअप करना
अपने खाते में नया AdMob ऐप्लिकेशन बनाने के लिए, कृपया यहां दिया गया तरीका अपनाएं:
- AdMob Console पर जाएं.
- ऐप्लिकेशन मेन्यू में जाकर, "ऐप्लिकेशन जोड़ें" पर क्लिक करें.
- जब आपसे पूछा जाए कि "क्या आपने Google Play या App Store पर अपना ऐप्लिकेशन पब्लिश किया है," तो "नहीं." जवाब दें
- ऐप्लिकेशन का नाम "Awesome Drawing Quiz," रखें. प्लैटफ़ॉर्म के तौर पर "Android" को चुनें. इसके बाद, "जोड़ें" पर क्लिक करें.
अपने खाते में AdMob ऐप्लिकेशन बनाने के बाद, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाने के लिए, यहां दिया गया तरीका अपनाएं.
- AdMob के फ़्रंटएंड में, ऐप्लिकेशन मेन्यू पर क्लिक करें. इसके बाद, ऐप्लिकेशन की सूची से "Awesome Drawing Quiz" चुनें.
- विज्ञापन यूनिट मेन्यू पर क्लिक करें. इसके बाद, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाने के लिए, विज्ञापन यूनिट जोड़ें पर क्लिक करें.
- विज्ञापन फ़ॉर्मैट के लिए, इनाम वाला चुनें.

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

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

- 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 ऐप्लिकेशन बनाने के लिए, कृपया यहां दिया गया तरीका अपनाएं:
- AdMob Console पर जाएं.
- ऐप्लिकेशन मेन्यू में जाकर, "ऐप्लिकेशन जोड़ें" पर क्लिक करें.
- जब आपसे पूछा जाए कि "क्या आपने Google Play या App Store पर अपना ऐप्लिकेशन पब्लिश किया है," तो "नहीं." जवाब दें
- ऐप्लिकेशन का नाम "Awesome Drawing Quiz," रखें. प्लैटफ़ॉर्म के तौर पर "iOS" चुनें. इसके बाद, "जोड़ें" पर क्लिक करें.
अपने खाते में AdMob ऐप्लिकेशन बनाने के बाद, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाने के लिए, यहां दिया गया तरीका अपनाएं.
- AdMob के फ़्रंटएंड में, ऐप्लिकेशन मेन्यू पर क्लिक करें. इसके बाद, ऐप्लिकेशन की सूची से "Awesome Drawing Quiz" चुनें.
- विज्ञापन यूनिट मेन्यू पर क्लिक करें. इसके बाद, इनाम वाले वीडियो विज्ञापन की नई यूनिट बनाने के लिए, विज्ञापन यूनिट जोड़ें पर क्लिक करें.
- विज्ञापन फ़ॉर्मैट के लिए, इनाम वाला चुनें.

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

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

- 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 Mobile Ads Unity प्लगिन जोड़ना
प्लगिन इंपोर्ट करना
Unity ऐप्लिकेशन पर AdMob विज्ञापन दिखाने के लिए, आपको प्रोजेक्ट में Google Mobile Ads Unity प्लगिन जोड़ना होगा.
- Google Mobile Ads Unity Plugin 3.18.1 पैकेज डाउनलोड करें. (ध्यान दें कि यह कोडलैब, प्लगिन के दूसरे वर्शन के साथ काम नहीं कर सकता)
- Awesome Drawing Quiz Unity प्रोजेक्ट में. प्रोजेक्ट में, Assets > Import Package > Custom Package पर जाएं.
- डाउनलोड किए गए प्रोजेक्ट में, GoogleMobileAds.unitypackage को इंपोर्ट करें.
AdMob ऐप्लिकेशन आईडी कॉन्फ़िगर करना
Unity एडिटर में, मेन्यू से Assets > Google Mobile Ads > Settings चुनें.

Google AdMob सेक्शन में जाकर, चालू है चेकबॉक्स पर क्लिक करके AdMob को चालू करें. इसके बाद, AdMob ऐप्लिकेशन आईडी इस तरह डालें:
- Android:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

5. Firebase प्रोजेक्ट सेट अप करना
Firebase कंसोल से नया प्रोजेक्ट बनाना
- Firebase कंसोल पर जाएं.
- प्रोजेक्ट जोड़ें को चुनें और अपने प्रोजेक्ट का नाम "शानदार ड्राइंग क्विज़" रखें.
Unity ऐप्लिकेशन जोड़ना
- अपने नए प्रोजेक्ट की खास जानकारी वाली स्क्रीन पर, अपने Unity ऐप्लिकेशन में Firebase जोड़ें पर क्लिक करें.
- 'iOS ऐप्लिकेशन के तौर पर रजिस्टर करें' चेकबॉक्स को चुनें.
- iOS बंडल आईडी को इस तरह डालें: com.codelab.awesomedrawingquiz.unity
- ऐप्लिकेशन का निकनेम इस तरह दें: Awesome Drawing Quiz (iOS पर Unity)
- 'Android ऐप्लिकेशन के तौर पर रजिस्टर करें' चेकबॉक्स पर सही का निशान लगाएं.
- Android पैकेज का नाम इस तरह डालें: com.codelab.awesomedrawingquiz.unity
- ऐप्लिकेशन का निकनेम इस तरह दें: Awesome Drawing Quiz (Android पर Unity)
- Android और iOS, दोनों ऐप्लिकेशन रजिस्टर करने के लिए, ऐप्लिकेशन रजिस्टर करें को चुनें.
Unity प्रोजेक्ट में Firebase कॉन्फ़िगरेशन फ़ाइलें जोड़ना
इसके बाद, आपको एक स्क्रीन दिखेगी. यहां से, कॉन्फ़िगरेशन फ़ाइल डाउनलोड की जा सकती है. इसमें आपके ऐप्लिकेशन के लिए, Firebase का ज़रूरी मेटाडेटा होता है. google-service.json और GoogleService-Info.plist फ़ाइल डाउनलोड करें. इसके बाद, दोनों को Unity प्रोजेक्ट में मौजूद
Assets फ़ोल्डर में ले जाएं.

Firebase Analytics SDK टूल जोड़ना
- Firebase Unity SDK 5.5.0 डाउनलोड करें और उसे किसी सुविधाजनक जगह पर अनज़िप करें.
- Awesome Drawing Quiz Unity प्रोजेक्ट खोलें. इसके बाद, Assets > Import Package > Custom Package पर जाएं.
- अनज़िप किए गए एसडीके से, Remote Config SDK (
dotnet4/FirebaseAnalytics.unitypackage) इंपोर्ट करें. - 'Import Unity package' विंडो में, Import पर क्लिक करें.
6. AdMob को Firebase प्रोजेक्ट से लिंक करना
अपने ऐप्लिकेशन को Firebase से लिंक करने के लिए, नीचे दिया गया तरीका अपनाएं.
- https://apps.admob.com पर जाकर, अपने AdMob खाते में साइन इन करें.
- साइडबार में मौजूद ऐप्लिकेशन पर क्लिक करें.
- "ड्राइंग के बारे में मज़ेदार क्विज़" को चुनें. अगर आपको हाल के ऐप्लिकेशन की सूची में यह दिखाई नहीं देता है, तो'सभी ऐप्लिकेशन देखें' पर क्लिक करें. यहां आपको उन सभी ऐप्लिकेशन की सूची दिखेगी जिन्हें आपने AdMob से जोड़ा है.
- साइडबार में ऐप्लिकेशन सेटिंग पर क्लिक करें.
- 'Firebase से लिंक करें' पर क्लिक करें.
- "किसी मौजूदा Firebase प्रोजेक्ट से लिंक करें और नया Firebase ऐप्लिकेशन बनाएं" विकल्प चुनें. इसके बाद, ड्रॉपडाउन मेन्यू से "Awesome Drawing Quiz" प्रोजेक्ट चुनें.
- "जारी रखें" बटन पर क्लिक करने के बाद, आपको "लिंक हो गया" मैसेज दिखेगा. सेट अप पूरा करने के लिए, "हो गया" बटन पर क्लिक करें.
AdMob ऐप्लिकेशन को Firebase प्रोजेक्ट से लिंक करने पर, AdMob और Firebase कंसोल, दोनों पर कुछ अतिरिक्त सुविधाएं अनलॉक हो जाएंगी. ये सुविधाएं इस तरह हैं:
रेवेन्यू कार्ड (AdMob)
रेवेन्यू कार्ड में, एक ही जगह पर रेवेन्यू के सभी संभावित सोर्स की पूरी जानकारी देखी जा सकती है. रेवेन्यू के इन सोर्स के लिए, यह सुविधा उपलब्ध है:
- AdMob (अनुमानित)
- मीडिएशन वाले विज्ञापन नेटवर्क (देखे गए)
- इन-ऐप्लिकेशन खरीदारी
- ई-कॉमर्स प्लैटफ़ॉर्म पर खरीदारी

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

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

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

विज्ञापन इवेंट की रिपोर्टिंग (Firebase)
विज्ञापन से जुड़े इवेंट (क्लिक, इंप्रेशन, और इनाम वाले इवेंट) अपने-आप इकट्ठा होते हैं. साथ ही, Google Analytics for Firebase में इनका इस्तेमाल किया जा सकता है.

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

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

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

8. ऐप्लिकेशन इवेंट जोड़ना
Awesome Drawing Quiz में उपयोगकर्ता के सफ़र को बेहतर तरीके से समझने के लिए, आपको कुछ कस्टम इवेंट तय करने होंगे. ये इवेंट, गेम में उपयोगकर्ता के व्यवहार को इस तरह ट्रैक करेंगे:
इवेंट का नाम | ट्रिगर किया गया... | पैरामीटर |
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, elapsed_time_sec, hint_used |
level_fail | जब कोई उपयोगकर्ता किसी लेवल को स्किप करता है | level_name, number_of_attempts, elapsed_time_sec, hint_used |
game_complete | गेम खत्म होने पर | number_of_correct_answers |
हर इवेंट से जुड़े हर पैरामीटर का ब्यौरा यहां दिया गया है:
इवेंट का नाम | पैरामीटर का नाम | ब्यौरा |
level_start | level_name | लेवल में दिखाई गई ड्राइंग का नाम (उदाहरण के लिए, "banana") |
level_wrong_answer | level_name | लेवल में दिखाई गई ड्राइंग का नाम (उदाहरण के लिए, "banana") |
ad_reward_prompt | ad_unit_id | इस कुकी का इस्तेमाल, इनाम वाला वीडियो विज्ञापन दिखाने के लिए किया जाता है |
ad_reward_impression | ad_unit_id | इस कुकी का इस्तेमाल, इनाम वाला वीडियो विज्ञापन दिखाने के लिए किया जाता है |
level_success | level_name | लेवल में दिखाई गई ड्राइंग का नाम (उदाहरण के लिए, "banana") |
level_success | number_of_attempts | किसी लेवल को पास करने के लिए किए गए प्रयासों की संख्या |
level_success | elapsed_time_sec | किसी लेवल को पूरा करने में लगा समय (सेकंड में) |
level_success | hint_used | किसी उपयोगकर्ता ने लेवल पूरा करने के लिए, इनाम वाला वीडियो विज्ञापन देखा या नहीं (1: इनाम वाला वीडियो विज्ञापन देखा / 0: बिना इनाम वाले वीडियो विज्ञापन के लेवल पूरा किया) |
level_fail | level_name | लेवल में दिखाई गई ड्राइंग का नाम (उदाहरण के लिए, "banana") |
level_fail | number_of_attempts | किसी लेवल को पास करने के लिए किए गए प्रयासों की संख्या |
level_fail | elapsed_time_sec | किसी लेवल को पूरा करने में लगा समय (सेकंड में) |
level_fail | hint_used | किसी उपयोगकर्ता ने लेवल पूरा करने के लिए, इनाम वाला वीडियो विज्ञापन देखा या नहीं (1: इनाम वाला वीडियो विज्ञापन देखा / 0: बिना इनाम वाले वीडियो विज्ञापन के लेवल पूरा किया) |
game_complete | number_of_correct_answers | गेम में पूरे किए गए लेवल की संख्या |
कस्टम इवेंट लॉग करने के लिए हेल्पर क्लास बनाना
आसानी से Analytics इवेंट लॉग करने के लिए, कस्टम इवेंट मैनेज करने के लिए एक हेल्पर क्लास बनाएं.
सबसे पहले, Assets/Scripts फ़ोल्डर में एक नया फ़ोल्डर बनाएं और उसका नाम Analytics रखें. इसके बाद, Analytics फ़ोल्डर में जाकर, नई C# स्क्रिप्ट बनाएं और उसका नाम 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);
}
}
}
गेम में आंकड़ों से जुड़े इवेंट लॉग करना
Assets/Scripts/Scenes फ़ोल्डर में मौजूद Game.cs फ़ाइल खोलें. AwesomeDrawingQuiz.Analytics नेमस्पेस के तहत मौजूद QuizAnalytics क्लास का इस्तेमाल करने के लिए, using डायरेक्टिव को इस तरह जोड़ें.
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
इसके बाद, मौजूदा स्क्रीन का नाम बदलने के लिए, Start() फ़ंक्शन में QuizAnalytics.SetScreenName() को कॉल करें. इसके अलावा, QuizAnalytics.LogGameStart() को कॉल करके यह भी बताया जा सकता है कि गेम शुरू हो गया है.
Scenes/Game.cs
void Start () {
// TODO: Log screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);
...
SetHintButtonEnabled(false);
// TODO: Log game_start event (101)
QuizAnalytics.LogGameStart();
...
}
इसके बाद, कॉलबैक फ़ंक्शन में, कस्टम इवेंट को इस तरह लॉग करने के लिए कॉल जोड़ें:
Scenes/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);
...
}
आखिर में, Assets/Scripts/Scenes फ़ोल्डर में मौजूद Main.cs फ़ाइल को अपडेट करें. आपको यह पक्का करना चाहिए कि Firebase SDK में किसी भी तरीके का इस्तेमाल करने से पहले, Firebase तैयार हो.
Scenes/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 की मदद से, डेवलपमेंट डिवाइसों पर आपके ऐप्लिकेशन से लॉग किया गया इवेंट का रॉ डेटा, रीयल टाइम में देखा जा सकता है.
यह डेवलपमेंट के इंस्ट्रुमेंटेशन फ़ेज़ के दौरान पुष्टि करने के लिए बहुत उपयोगी है. इससे आपको Analytics को लागू करने के दौरान हुई गड़बड़ियों और गलतियों का पता लगाने में मदद मिल सकती है.
Android पर डीबग मोड चालू करना
आम तौर पर, आपके ऐप्लिकेशन में लॉग किए गए इवेंट को एक साथ बैच किया जाता है. इसमें करीब एक घंटा लगता है. इसके बाद, इन्हें एक साथ अपलोड किया जाता है. अपने डेवलपमेंट डिवाइस पर डीबग मोड चालू करें, ताकि इवेंट को कम से कम देरी के साथ अपलोड किया जा सके. इससे, Analytics को तुरंत लागू करने की पुष्टि की जा सकेगी.
सबसे पहले, Android Studio में Terminal टूल खोलें. यह सबसे नीचे मौजूद टूलबार में होता है.

इसके बाद, यह निर्देश चलाएं. पक्का करें कि टेस्ट करने के लिए इस्तेमाल किया जा रहा 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 रिपोर्ट में इवेंट दिखेंगे.

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

ज़्यादा जानकारी के लिए, कृपया DebugView के बारे में सहायता केंद्र का लेख पढ़ें.
10. पैरामीटर रिपोर्टिंग की सुविधा चालू करना
Google Analytics for Firebase, डिफ़ॉल्ट रूप से इवेंट की कुल संख्या इकट्ठा करेगा. हालांकि, कस्टम पैरामीटर के लिए रिपोर्टिंग की सुविधा को चालू करना होगा. ऐसा हर उस इवेंट पैरामीटर के लिए करना होगा जिसमें आपकी दिलचस्पी है. इस सुविधा को चालू करने के बाद, 'Firebase के लिए Google Analytics' कस्टम पैरामीटर के आंकड़े दिखाने के लिए, अतिरिक्त कार्ड दिखाएगा.
किसी इवेंट के लिए कस्टम पैरामीटर रजिस्टर करने के लिए:
- Firebase कंसोल पर जाएं और पहले से बनाया गया Awesome Drawing Quiz प्रोजेक्ट चुनें.
- नेविगेशन मेन्यू में जाकर, इवेंट पर क्लिक करें.
- जिस इवेंट में बदलाव करना है उसकी लाइन में,
> पैरामीटर की रिपोर्टिंग में बदलाव करें पर क्लिक करें.

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

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

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

ऊपर दिए गए स्क्रीनशॉट के मुताबिक, आपको आसानी से पता चल सकता है कि हॉरिजॉन लेवल में सबसे ज़्यादा गलत जवाब दिए गए हैं. इसका मतलब है कि यह लेवल, अन्य लेवल की तुलना में उपयोगकर्ताओं के लिए मुश्किल है.
यहां से मिली अहम जानकारी का इस्तेमाल करके, यह तय किया जा सकता है कि नए उपयोगकर्ताओं को मुश्किल लेवल न दिए जाएं, ताकि उन्हें लंबे समय तक जोड़े रखा जा सके.
किसी लेवल को पूरा करने के लिए, औसतन कितनी बार कोशिश की गई?
Awesome Drawing Quiz में, उपयोगकर्ता हर लेवल के जवाब को जितनी बार चाहें उतनी बार सबमिट कर सकते हैं.
आपने number_of_attempts इवेंट में number_of_attempts पैरामीटर के लिए, पैरामीटर रिपोर्टिंग की सुविधा चालू की है. इसलिए, आपको उस पैरामीटर के लिए ज़्यादा जानकारी वाली मेट्रिक दिख सकती हैं.level_success
इवेंट रिपोर्ट में जाकर, level_success इवेंट पर क्लिक करें. level_success इवेंट रिपोर्ट में, number_of_attemps कार्ड ढूंढें. आपको उस कार्ड पर किए गए अनुरोधों की औसत संख्या इस तरह दिखेगी:

यहां से मिली अहम जानकारी का इस्तेमाल करके, गेम के लेवल को औसतन ऑप्टिमाइज़ किया जा सकता है. उदाहरण के लिए, अगर कोशिशों की औसत संख्या 1 के बहुत करीब है, तो गेम को थोड़ा और मुश्किल बनाया जा सकता है.
क्या उपयोगकर्ताओं ने सवाल को हल करने के लिए हिंट का इस्तेमाल किया, भले ही वे आखिर में किसी लेवल को पूरा न कर पाए हों?
जब कोई उपयोगकर्ता किसी लेवल को स्किप करने का फ़ैसला करता है, तब level_fail इवेंट ट्रिगर होता है. उपयोगकर्ता के फ़ैसले की कई वजहें हो सकती हैं.
हालांकि, इनाम वाला वीडियो विज्ञापन देखने के बाद गेम में उन्हें एक सुराग मिल सकता है. इसलिए, यह जानना ज़रूरी है कि उपयोगकर्ता ने कम से कम सुराग की मदद से लेवल पूरा करने की कोशिश की है या नहीं.
इवेंट रिपोर्ट में जाकर, level_fail इवेंट पर क्लिक करें. level_fail इवेंट रिपोर्ट में, hint_used कार्ड ढूंढें. आपको hint_used इवेंट पैरामीटर की औसत संख्या दिखेगी. ध्यान दें कि जब किसी हिंट का इस्तेमाल किया जाता है, तो इसे 1 पर सेट किया जाता है. वहीं, जब किसी हिंट का इस्तेमाल नहीं किया जाता है, तो इसे 0 पर सेट किया जाता है.

अगर hint_used कार्ड पर मौजूद संख्याएं 0 के आस-पास हैं, तो इसका मतलब है कि इनाम (सुझाव) उपयोगकर्ताओं को ज़्यादा पसंद नहीं आ रहा है. साथ ही, इनाम वाले वीडियो विज्ञापन से मिलने वाले रेवेन्यू को बढ़ाने का मौका भी आपके हाथ से जा रहा है.
इसलिए, आपको उपयोगकर्ताओं के लिए इनाम को ज़्यादा फ़ायदेमंद बनाना चाहिए, ताकि वे गेम में ज़्यादा दिलचस्पी दिखा सकें. साथ ही, इनाम वाले वीडियो विज्ञापन से मिलने वाले रेवेन्यू में भी बढ़ोतरी हो सके.
हर गेम में औसतन कितने लेवल पूरे किए गए?
Awesome Drawing Quiz में, हर गेम के लिए कुल छह लेवल होते हैं. जब उपयोगकर्ता छह लेवल पूरे कर लेता है, तब 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 इवेंट पैरामीटर की औसत संख्या दिखेगी.

अगर औसतन बहुत कम लेवल पूरे किए गए हैं, तो आपको गेम को फिर से व्यवस्थित करना चाहिए, ताकि लोग किसी लेवल को आसानी से पूरा कर सकें. इससे वे बिना दिलचस्पी खोए आपका गेम खेलते रहेंगे.
12. सब हो गया!
आपने AdMob+Firebase 101 Unity Codelab पूरा कर लिया है. इस कोडलैब का पूरा कोड,
101-complete_and_102-base फ़ोल्डर में देखा जा सकता है.
AdMob और Firebase के कोडलैब के अगले हिस्से में, आपको ऐप्लिकेशन इवेंट फ़्लो को विज़ुअलाइज़ करने के लिए फ़नल का इस्तेमाल करने का तरीका बताया जाएगा. साथ ही, इसमें यह भी बताया जाएगा कि ऐप्लिकेशन को अपडेट किए बिना, गेम में पैरामीटर की वैल्यू को ऑप्टिमाइज़ करने के लिए, रिमोट कॉन्फ़िगरेशन और A/B टेस्टिंग का इस्तेमाल कैसे करें.