Pierwsze kroki z Firebase w języku C++

1. Omówienie

Z tego ćwiczenia w Codelabs dowiesz się, jak zintegrować pakiet SDK do gier w C++ z Firebase w przykładowej grze na Androida, wykorzystując Google Analytics. Będziesz mieć możliwość dodawania potrzebnych funkcji, zintegrowania podstawowych funkcji analitycznych, aby mierzyć postępy gracza, a także udostępniania gry testerom, aby uzyskać ich opinie na wczesnym etapie.

Przewodnik

Jeśli chcesz przejść te ćwiczenia z autorami treści, obejrzyj ten film:

Czego się nauczysz

  • Jak dodać Firebase do gry opartej na Android CMake.
  • Jak określić, których zależności C++ i Gradle potrzebujesz.
  • Jak rejestrować zdarzenia Analytics.
  • Jak debugować zdarzenia analityczne
  • Jak udostępnić grę za pomocą Rozpowszechniania aplikacji.

Czego potrzebujesz

  • Android Studio
  • Przykładowy kod
  • urządzenia testowego lub emulatora z Usługami Google Play;

2. Pobieranie przykładowego kodu

Zapłać lub pobierz z GitHub:

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

Pobierz pakiet SDK Firebase

MacOS/Linux:

sh download.sh

Windows (z PowerShell):

./download.ps1

Możesz też ręcznie pobrać pakiet SDK. Jeśli to zrobisz, pakiet Firebase C++ SDK musi zostać rozpakowany do folderu /third_party, tak aby folder o nazwie firebase_cpp_sdk zawierał główny CMakeLists.txt z pakietu SDK Firebase.

3. Uruchom przykładową grę

Najpierw zagraj w próbkę gry i sprawdź, czy wszystko działa. To prosta gra typu „nieskończona” z procesowo wygenerowanym poziomem i jednym przyciskiem do skakania.

  1. Wybierz plik > Nowe > Importuj projekt (lub wybierz Importuj projekt na ekranie powitalnym)
  2. Otwórz folder proj.android/ znajdujący się w repozytorium
  1. [Opcjonalnie] Otwórz proj.android/gradle.properties i popraw PROP_APP_ABI. Aby skrócić czas kompilacji, możesz usunąć całą architekturę oprócz docelowej. Aplikacja PROP_APP_ABI=x86 skompiluje tylko na potrzeby emulatora PROP_APP_ABI=armeabi-v7a dla większości telefonów
  2. Aby skompilować i uruchomić grę, kliknij przycisk debugowania fa7d6449514b13c3.png. Utworzenie silnika gry Cocos2dx zajmie trochę czasu.

4. Konfiguracja konsoli Firebase

  1. Utwórz nowy projekt w konsoli Firebase. 5d2552e8450338d3.png
  2. Nazwij go, np. „Bieżnik do lodów na patyku”.
  3. Włącz Analytics 255468f27832bb18.png
  4. Dodaj lub utwórz konto Analytics c7fa1b1004135be3.png
  5. Dodaj nową aplikację na Androida do projektu 984b9f20cd590597.png
  6. Dodaj com.firebase.popsiclerunner jako nazwę pakietu.

fda079aab5b185d4.png

  1. Pobierz plik google-services.json i skopiuj go do folderu proj.android/app 95aae8dd12033335.png
  1. Zignoruj podane instrukcje dodawania pakietu SDK Firebase i kliknij Dalej.
  2. Możesz kliknąć „Pomiń ten krok” po wyświetleniu prośby o weryfikację instalacji.

5. Dodaj Firebase do swojej gry

Dodaj pakiet SDK Firebase do pliku CMakeLists.txt

Otwórz poziom główny CMakeLists.txt. Ten kod powinien znajdować się u góry

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

i dodaj te wiersze na końcu pliku 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 zawiera pakiet Firebase C++ SDK i udostępnia tę grę

target_link_libraries Przykuwa uwagę graczy dzięki bibliotekom C++ Firebase stworzonym dla Androida.

Dodawanie wtyczki usług Google

Aby podłączyć pakiet SDK Firebase, musisz dodać wtyczkę usług Google do skryptu kompilacji Gradle. Aby to zrobić, otwórz plik build.gradle na poziomie projektu (w folderze proj.android). I dodaj classpath 'com.google.gms:google-services:4.3.3' jako zależność skryptu buildscript.

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
    }
}

Następnie dodaj wtyczkę do pliku build.gradle na poziomie modułu (znajduje się on w folderze proj.android/app). Dodaj apply plugin: 'com.google.gms.google-services' na koncie apply plugin: 'com.android.application':

build.gradle

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

Znajdź pakiet C++ SDK w Gradle

Aby poinformować Gradle, gdzie znaleźć pakiet Firebase C++ SDK, dodaj następujące wiersze na końcu pliku settings.gradle.

settings.gradle

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

Dodaj zależności Androida

Aby dołączyć do Firebase zależności Androida w Firebase, otwórz plik Gradle na poziomie modułu dla popsicle_runner (w proj.android/app/build.gradle) i dodaj poniższy kod tuż przed typową sekcją dependences {:

build.gradle

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

AndroidX i Jetifier

Aby dodać obsługę AndroidaX i Jetifiera, otwórz gradle.properties i dodaj na końcu ten kod:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Zainicjuj Firebase w swojej grze

Zainicjuj Firebase w grze, otwierając aplikację Classes/AppDelegate.cpp. Na początku dodaj te dyrektywy #include:

AppDelegate.cpp

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

Następnie dodaj App::Create i zainicjuj potrzebne funkcje Firebase. W tym celu znajdź usługę AppDelegate::applicationDidFinishLaunching i dodaj ten kod przed auto scene = MainMenuScene::createScene():

AppDelegate.cpp

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

Jeśli zdebugujesz grę i odświeżysz panel Firebase, po około minucie powinien pojawić się 1 nowy użytkownik.

6. Dodaj Analytics

Nawet na wczesnym etapie tworzenia aplikacji analityka jest przydatnym narzędziem do sprawdzania, jak beta-testerzy wchodzą w interakcję z grą. Niektóre dane są zbierane automatycznie (np. raporty o utrzymaniu), ale warto dodać zdarzenia niestandardowe dostosowane do konkretnej gry.

Warto zacząć od zarejestrowania zdarzenia analitycznego, gdy gracz rozpocznie poziom. Dzięki liczbie zdarzeń rozpoczęcia poziomu możemy sprawdzić, jak często gracz może ponownie zagrać w grę w ramach sesji.

4b5df08c0f6b6938.png

Zdarzenia zostaną również zarejestrowane, gdy gracz umrze wraz z dystansem, jaki doszedł. Dzięki temu przekonamy się, jakie zmiany wprowadzamy w czasie trwania pojedynczej sesji i pomogą nam zdecydować, czy gracze są zainteresowani krótszą, trudniejszą lub dłuższą rozgrywką.

Dodaj nagłówki Analytics

Otwórz Classes/PopsicleScene.cpp i dodaj nagłówki Firebase na górze, abyśmy mogli wykonywać wywołania analityczne.

PopsicleScene.cpp

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

Zarejestruj zdarzenie rozpoczęcia poziomu

Aby zarejestrować zdarzenie, gdy ta scena jest inicjowana przez Cocos2dx Director, znajdź funkcję skróconą PopsicleScene::onEnter(). Wpisz tutaj ten kod, aby zarejestrować zdarzenie rozpoczęcia poziomu:

PopsicleScene.cpp

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

Zarejestruj zdarzenie zakończenia poziomu

Aby sprawdzić, jak radzi sobie dany gracz, zarejestrujmy zdarzenie Koniec poziomu z informacją, jak daleko on zaszedł w momencie śmierci. W tym celu znajdź obiekt PopsicleScene::gameOver() i dodaj go na końcu bloku if(!_gameOver) { przed ustawieniem _gameOver = true;:

PopsicleScene.cpp

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

kEventLevelEnd to zdarzenie zakończenia poziomu. Z kolei "distance" to „parametr zdarzenia”. Dodajemy tutaj ostatni zarejestrowany dystans, który pozwala oszacować, jak daleko pokonał zawodnik, zanim umrze.

7. Testowanie zdarzeń

Możesz teraz kliknąć Debuguj fa7d6449514b13c3.png, ale może minąć trochę czasu, zanim zdarzenia pojawią się w panelu Analytics. Istnieją dwa powody: 1) zdarzenia są grupowane i przesyłane mniej więcej raz na godzinę, aby oszczędzać baterię, oraz 2) raporty są generowane co 24 godziny.

Włączam tryb debugowania

Nadal możesz debugować zdarzenia Analytics, włączając na urządzeniu tryb debugowania.

Najpierw upewnij się, że masz zainstalowany i skonfigurowany program Android Debug Bridge (ADB). Jeśli wpiszesz adb devices, powinno wyświetlić się urządzenie, na którym chcesz przeprowadzić test:

$ adb devices
List of devices attached
emulator-5554   device

Następnie uruchom to polecenie adb shell:

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

Spowoduje to, że Firebase Analytics od razu zacznie rejestrować zdarzenia i automatycznie wyklucza je z normalnych raportów, aby podczas testów nie zanieczyszczać zdarzeń na żywo. Jeśli zechcesz później cofnąć tę czynność, po prostu napisz:

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

Wyświetlanie wydarzeń

Otwórz „DebugView” w konsoli Firebase 84472ac3a7ad9aff.png

Kliknij Debuguj fa7d6449514b13c3.png i zacznij grać. Nowe wydarzenia powinny pojawić się niemal natychmiast po ich wystąpieniu w grze. 5e81dfa682497414.png

Jeśli rozwiniesz zdarzenie level_end, zobaczysz też niestandardową „odległość” zapisany parametr. 4451be4a6a97399c.png

8. Znajdowanie testerów

W następnej kolejności musisz przyjrzeć się grze w sposób, który zobaczą użytkownicy w Twoim studio, ci znajomi lub członkowie Twojej społeczności. Rozpowszechnianie aplikacji przez Firebase to świetny sposób na zapraszanie graczy do gry.

Tworzenie samodzielnych plików binarnych

Najpierw utwórz samodzielny pakiet APK do udostępnienia w kompilacji > Pakiety kompilacji / pliki APK > Kompilacja plików APK: 14c6bd5549cdb57a.png

Android Studio wyświetli okno dialogowe, które pozwoli Ci zlokalizować utworzony plik. Jeśli go przegapisz, możesz kliknąć „Dziennik zdarzeń”. , aby ponownie otrzymać link. ac730e3428689c4c.png

Prześlij do Firebase App Distribution

  1. Otwórz Rozpowszechnianie aplikacji i kliknij „Rozpocznij”. dcdafea94e4c1c15.png
  2. Przeciągnij plik APK i upuść go w polu z napisem „Przeciągnij tutaj dowolny plik APK, aby utworzyć nową wersję”. 4b6f94a05391c63f.png
  3. Jako pierwszy tester wpisz swój adres e-mail. ce047d710befa44a.png
  4. Kliknij Next (Dalej).
  5. Dodaj opis i kliknij Rozpowszechnianie

Zaproś testerów

Zamiast ręcznie wpisywać każdy adres e-mail, możesz utworzyć link z zaproszeniem. Gdy zarejestrujesz użytkownika za pomocą tego linku z zaproszeniem, możesz go dodać do grupy testerów. Pozwoli to na przykład oddzielić testerów wewnętrznych od testerów zewnętrznych.

  1. Kliknij „Testerzy i Grupy 7e380773faff4eb7.png
  2. Utwórz nową grupę 6b046c010b14adaf.png i nadaj jej nazwę „Testerzy Androida”.
  3. Kliknij „Zaproś linki”. a7fc2c8b01b6883e.png
  4. Kliknij „Nowy link z zaproszeniem”.
  5. Ustaw grupę tutaj za pomocą menu. d1b289e825d93d40.png
  6. Kliknij „Utwórz link”.
  7. Kliknij „Kopiuj link”. i udostępniać w dowolny sposób

9. Gratulacje

Udało Ci się dodać funkcje analityczne do swojej gry w języku C++, zaprosić znajomych do gry i wiedzieć, jak znaleźć i połączyć biblioteki Firebase w systemie kompilacji opartym na CMake i Gradle, często używanym w programowaniu na Androida.

Omówione kwestie

  • Jak dodać Firebase do gry opartej na Android CMake.
  • Jak określić, których zależności C++ i Gradle potrzebujesz.
  • Jak rejestrować zdarzenia Analytics.
  • Jak debugować zdarzenia analityczne
  • Jak udostępnić grę za pomocą Rozpowszechniania aplikacji.

Następne kroki

  • Spróbuj zalogować użytkownika anonimowo i zapisać jego rekord w bazie danych czasu rzeczywistego.
  • Rejestruj zdarzenia Analytics w swojej grze.
  • Spróbuj dodać statystyki do gry na iOS.

Więcej informacji