C++ में Firebase के साथ शुरुआत करें

1. खास जानकारी

इस कोडलैब में, आपको Android के सैंपल में C++ Firebase गेम SDK टूल को इंटिग्रेट करने का तरीका बताया जाएगा. इसके लिए, आपको उदाहरण के तौर पर Google Analytics का इस्तेमाल करना होगा. इसमें आपको अपनी ज़रूरत के हिसाब से सुविधाएं जोड़ने का विकल्प मिलेगा. साथ ही, आंकड़ों से जुड़े बुनियादी तथ्य इंटिग्रेट करके, खिलाड़ी की प्रोग्रेस का आकलन किया जा सकेगा. साथ ही, गेम को टेस्टर के साथ शेयर किया जा सकेगा, ताकि आपको शुरुआती सुझाव मिल सकें.

सिलसिलेवार तरीके से निर्देश

अगर आपको लेखकों के साथ मिलकर इस कोडलैब के बारे में जानना है, तो यह वीडियो देखें:

आप इन चीज़ों के बारे में जानेंगे

  • Android CMake पर आधारित गेम में Firebase जोड़ने का तरीका.
  • यह पता लगाने का तरीका कि आपको किस C++ और Gradle डिपेंडेंसी की ज़रूरत है.
  • Analytics के इवेंट लॉग करने का तरीका.
  • आंकड़ों के इवेंट को डीबग करने का तरीका.
  • App Distribution से गेम को शेयर करने का तरीका.

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

  • Android Studio
  • सैंपल कोड
  • Google Play services वाला टेस्ट डिवाइस या एम्युलेटर

2. सैंपल कोड पाएं

GitHub से चेकआउट या डाउनलोड करें:

git clone https://github.com/FirebaseExtended/cmake-way-for-firebase.git

Firebase SDK टूल डाउनलोड करें

MacOS/Linux:

sh download.sh

Windows (PowerShell से):

./download.ps1

आपके पास मैन्युअल तरीके से SDK टूल डाउनलोड करने का भी विकल्प है. ऐसा करने पर, Firebase C++ SDK टूल को /third_party में इस तरह एक्सट्रैक्ट किया जाना चाहिए कि firebase_cpp_sdk नाम के फ़ोल्डर में, Firebase SDK टूल का रूट CMakeLists.txt मौजूद हो.

3. सैंपल गेम चलाएं

सबसे पहले, सैंपल गेम खेलें और पक्का करें कि सब कुछ ठीक से काम कर रहा हो. यह एक आसान से अनगिनत रनर है. इसमें प्रोसेस से जनरेट किया गया लेवल है. इसमें जंप करने के लिए एक बटन भी है.

  1. फ़ाइल > चुनें नया > प्रोजेक्ट इंपोर्ट करें या स्प्लैश स्क्रीन से 'प्रोजेक्ट इंपोर्ट करें' चुनें
  2. डेटा स्टोर करने की जगह में शामिल proj.android/ फ़ोल्डर खोलें
  1. [ज़रूरी नहीं] proj.android/gradle.properties खोलें और ठीक है PROP_APP_ABI. बिल्ड में लगने वाला समय कम करने के लिए, टारगेट आर्किटेक्चर को छोड़कर बाकी सभी को हटाया जा सकता है. PROP_APP_ABI=x86 को सिर्फ़ एम्युलेटर के लिए बनाया जाएगा, PROP_APP_ABI=armeabi-v7a इसे ज़्यादातर फ़ोन के लिए बनाएगा
  2. गेम बनाने और चलाने के लिए, डीबग करें बटन fa7d6449514b13c3.png पर क्लिक करें. Cocos2dx गेम इंजन को बनाने में समय लगेगा.

4. Firebase कंसोल सेटअप

  1. Firebase कंसोल में एक नया प्रोजेक्ट बनाएं. 5d2552e8450338d3.png
  2. इसे "पॉप्सिकल रनर" जैसा नाम दें
  3. Analytics 255468f27832bb18.png चालू करें
  4. Analytics खाता c7fa1b1004135be3.png जोड़ें या बनाएं
  5. अपने प्रोजेक्ट 984b9f20cd590597.png में नया Android ऐप्लिकेशन जोड़ें
  6. com.firebase.popsiclerunner को अपने पैकेज के नाम के तौर पर जोड़ें.

fda079aab5b185d4.png

  1. google-services.json डाउनलोड करें और इसे proj.android/app 95aae8dd12033335.png में कॉपी करें
  1. Firebase SDK टूल जोड़ने के लिए दिए गए निर्देशों को अनदेखा करें और 'आगे बढ़ें' पर क्लिक करें
  2. "यह चरण छोड़ें" पर क्लिक करके जब आपके इंस्टॉलेशन की पुष्टि करने के लिए कहा जाए

5. अपने गेम में Firebase जोड़ना

Firebase SDK टूल को CMakeLists.txt में जोड़ें

रूट लेवल CMakeLists.txt खोलें. इसमें सबसे ऊपर यह कोड होना चाहिए

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

और इन पंक्तियों को उस CMakeLists.txt फ़ाइल के आखिर में जोड़ दें

CMakeLists.txt

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/firebase_cpp_sdk)
target_link_libraries(${APP_NAME} firebase_analytics firebase_app)

add_subdirectory में Firebase C++ SDK टूल शामिल है और यह इसे इस गेम के लिए उपलब्ध कराता है

target_link_libraries Android के लिए बनाई गई, Firebase की C++ लाइब्रेरी की मदद से, गेम में दिलचस्पी बढ़ाएं.

Google सेवाओं का प्लगिन जोड़ें

Firebase SDK टूल को जोड़ने के लिए, आपको अपनी Gradle बिल्ड स्क्रिप्ट में Google Services प्लगिन जोड़ना होगा. ऐसा करने के लिए, प्रोजेक्ट लेवल build.gradle फ़ाइल खोलें (यह proj.android फ़ोल्डर में होती है). साथ ही, classpath 'com.google.gms:google-services:4.3.3' को बिल्डस्क्रिप्ट डिपेंडेंसी के तौर पर जोड़ें.

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    }
}

इसके बाद, अपने मॉड्यूल लेवल build.gradle फ़ाइल में प्लगिन जोड़ें (यह आपके proj.android/app फ़ोल्डर में है). apply plugin: 'com.android.application' के नीचे apply plugin: 'com.google.gms.google-services' जोड़ें:

build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

Gradle में C++ SDK टूल ढूंढना

Gradle को यह बताने के लिए कि Firebase C++ SDK टूल कहां मिलेगा, settings.gradle फ़ाइल के नीचे ये लाइनें जोड़ें.

settings.gradle

gradle.ext.firebase_cpp_sdk_dir = "$settingsDir/../third_party/firebase_cpp_sdk/"
includeBuild "$gradle.ext.firebase_cpp_sdk_dir"

Android डिपेंडेंसी जोड़ना

Firebase से Android डिपेंडेंसी जोड़ने के लिए, popsicle_runner (proj.android/app/build.gradle में) के लिए मॉड्यूल लेवल की ग्रेडल फ़ाइल खोलें. इसके बाद, आखिर में सामान्य dependences { सेक्शन से ठीक पहले, नीचे दी गई चीज़ें जोड़ें:

build.gradle

apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
firebaseCpp.dependencies {
    analytics
}

AndroidX और Jetifier

gradle.properties को खोलकर और आखिर में इसे जोड़कर, AndroidX और Jetifier सहायता जोड़ें:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

अपने गेम में Firebase को शुरू करना

Classes/AppDelegate.cpp को खोलकर गेम में Firebase को शुरू करें. सबसे ऊपर ये #include निर्देश जोड़ें:

AppDelegate.cpp

#include <firebase/app.h>
#include <firebase/analytics.h>

इसके बाद, App::Create जोड़ें और अपनी ज़रूरत के हिसाब से Firebase की सुविधाएं शुरू करें. ऐसा करने के लिए, AppDelegate::applicationDidFinishLaunching ढूंढें और auto scene = MainMenuScene::createScene() से पहले यह कोड जोड़ें:

AppDelegate.cpp

{
    using namespace firebase;
    auto app = App::Create(JniHelper::getEnv(), JniHelper::getActivity());
    analytics::Initialize(*app);
}

अगर गेम को डीबग किया जाता है और Firebase के डैशबोर्ड को रीफ़्रेश किया जाता है, तो आपको एक मिनट के बाद एक नया उपयोगकर्ता दिखेगा.

6. Analytics जोड़ें

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

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

4b5df08c0f6b6938.png

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

Analytics हेडर जोड़ें

Classes/PopsicleScene.cpp खोलें और सबसे ऊपर Firebase हेडर जोड़ें, ताकि हम Analytics कॉल कर सकें.

PopsicleScene.cpp

#include <firebase/analytics.h>
#include <firebase/analytics/event_names.h>

लेवल शुरू करने का इवेंट लॉग करें

जब इस सीन का स्टेजिंग Cocos2dx के निर्देशक ने किया हो, तब किसी इवेंट को लॉग करने के लिए, टैप किया गया फ़ंक्शन PopsicleScene::onEnter() ढूंढें. लेवल शुरू होने के इवेंट को लॉग करने के लिए, यह कोड यहां डालें:

PopsicleScene.cpp

using namespace firebase;
analytics::LogEvent(analytics::kEventLevelStart);

लेवल खत्म होने का इवेंट लॉग करें

कोई खिलाड़ी कितना अच्छा कर रहा है, यह देखने के लिए लेवल एंड के इवेंट को लॉग करते हैं. इसमें यह जानकारी दी जाती है कि आखिरी बार मरने के बाद, खिलाड़ी ने कितनी दूर तक गेम खेला. ऐसा करने के लिए, PopsicleScene::gameOver() ढूंढें और _gameOver = true; सेट करने से पहले इसे if(!_gameOver) { ब्लॉक के आखिर में जोड़ें:

PopsicleScene.cpp

{
    using namespace firebase;
    analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}

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

7. इवेंट की जांच करना

अभी डीबग करें fa7d6449514b13c3.png पर क्लिक किया जा सकता है. हालांकि, Analytics के डैशबोर्ड पर किसी भी इवेंट को रिपोर्ट करने में कुछ समय लगेगा. इसकी दो वजहें हैं: 1) बैटरी बचाने के लिए, इवेंट के बैच में एक घंटे में एक बार अपलोड किया जाता है और 2) हर 24 घंटे में रिपोर्ट जनरेट की जाती हैं.

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

डिवाइस को डीबग मोड में रखकर, Analytics इवेंट को अब भी डीबग किया जा सकता है.

सबसे पहले यह पक्का करें कि आपने Android डीबग ब्रिज (ADB) इंस्टॉल किया हो और उसे सेटअप किया हो. adb devices टाइप करने पर, वह डिवाइस दिखना चाहिए जिस पर आपको टेस्ट करना है:

$ adb devices
List of devices attached
emulator-5554   device

इसके बाद, adb shell का यह निर्देश चलाएं:

adb shell setprop debug.firebase.analytics.app com.firebase.popsiclerunner

इससे Firebase Analytics, इवेंट को तुरंत लॉग कर सकता है. साथ ही, जांच के दौरान आपके लाइव इवेंट को प्रदूषण से बचाने के लिए, यह उन्हें आपकी सामान्य रिपोर्ट से अपने-आप बाहर कर देगा. अगर आप बाद में इस कार्रवाई को पहले जैसा करना चाहें, तो बस यह लिखें:

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

इवेंट देखना

"DebugView" खोलें अपने Firebase कंसोल में 84472ac3a7ad9aff.png

डीबग करें fa7d6449514b13c3.png पर क्लिक करें और गेम खेलें. आपको गेम में नए इवेंट आने के तुरंत बाद दिखने लगेंगे. 5e81dfa682497414.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

level_end इवेंट को बड़ा करने पर, आपको कस्टम "दूरी" भी दिखेगी पैरामीटर जिसे आपने लॉग किया है. 4451be4a6a97399c.png

8. जांच करने वाले लोगों को ढूंढना

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

स्टैंडअलोन बाइनरी बनाना

पहले बिल्ड > से शेयर करने के लिए एक स्टैंडअलोन APK बनाएं बंडल / APK बनाएं > बिल्ड APK 14c6bd5549cdb57a.png

Android Studio में एक डायलॉग बॉक्स पॉप-अप होगा, जिससे आपको बनाई गई फ़ाइल का पता लगाने की सुविधा मिलती है. अगर आपको इवेंट की जानकारी नहीं दिखती है, तो "इवेंट लॉग" पर क्लिक करें पर जाकर इस लिंक को फिर से लिंक कर सकते हैं. ac730e3428689c4c.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

Firebase App Distribution पर अपलोड करें

  1. App Distribution खोलें और "शुरू करें" पर क्लिक करें dcdafea94e4c1c15.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. अपनी .apk फ़ाइल को खींचकर उस बॉक्स में छोड़ें जिस पर लिखा है "नई रिलीज़ बनाने के लिए किसी भी .apk को यहां खींचें." 4b6f94a05391c63f.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  3. सबसे पहले टेस्टर के तौर पर अपना ईमेल पता डालें. ce047d710befa44a.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  4. आगे बढ़ें पर क्लिक करें.
  5. ब्यौरा जोड़ें और 'डिस्ट्रिब्यूट करें' पर क्लिक करें

टेस्टर को न्योता दें

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

  1. "टेस्टर और ग्रुप" 7e380773faff4eb7.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. एक नया ग्रुप 6b046c010b14adaf.png बनाएं और उसे "Android टेस्टर" जैसा कोई नाम दें.
  3. "न्योते के लिंक" पर क्लिक करें a7fc2c8b01b6883e.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  4. "न्योते का नया लिंक" पर क्लिक करें
  5. ड्रॉपडाउन से ग्रुप को यहां सेट करें. d1b289e825d93d40.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  6. "लिंक बनाएं" पर क्लिक करें
  7. "लिंक कॉपी करें" पर क्लिक करें और जैसे चाहें, शेयर करें.

9. बधाई हो

आपने C++ पर आधारित अपने गेम में आंकड़े जोड़ लिए हैं और कुछ दोस्तों को खेलने का न्योता दे दिया है. साथ ही, आपको पता है कि CMake और Gradle पर आधारित बिल्ड सिस्टम में Firebase लाइब्रेरी को कैसे ढूंढा और लिंक किया जा सकता है, जो Android डेवलपमेंट में आम तौर पर इस्तेमाल किए जाते हैं.

हमने क्या कवर किया

  • Android CMake पर आधारित गेम में Firebase जोड़ने का तरीका.
  • यह पता लगाने का तरीका कि आपको किस C++ और Gradle डिपेंडेंसी की ज़रूरत है.
  • Analytics के इवेंट लॉग करने का तरीका.
  • आंकड़ों के इवेंट को डीबग करने का तरीका.
  • App Distribution से गेम को शेयर करने का तरीका.

अगले चरण

  • किसी उपयोगकर्ता को पहचान छिपाकर लॉग इन करने की कोशिश करें और उसका सबसे ज़्यादा स्कोर रीयलटाइम डेटाबेस में सेव करें.
  • अपने गेम में Analytics के इवेंट लॉग करें.
  • किसी iOS गेम में आंकड़े जोड़कर देखें.

ज़्यादा जानें