Inizia a utilizzare Firebase in C++

1. Panoramica

In questo codelab, imparerai a integrare l'SDK C++ di Firebase Games in un gioco Android di esempio utilizzando Google Analytics come esempio. Potrai aggiungere le funzionalità di cui hai bisogno, integrare alcune logiche di analisi di base per misurare i progressi dei giocatori e condividere il gioco con i tester per ricevere feedback tempestivi.

Procedura dettagliata

Se vuoi esplorare questo codelab con gli autori, guarda questo video:

Obiettivi didattici

  • Come aggiungere Firebase al tuo gioco basato su Android CMake.
  • Come capire quali dipendenze C++ e Gradle ti servono.
  • Come registrare gli eventi di Analytics.
  • Come eseguire il debug degli eventi di analisi.
  • Come condividere il tuo gioco con App Distribution.

Che cosa ti serve

  • Android Studio
  • Il codice campione
  • Un emulatore o un dispositivo di test con Google Play Services

2. recupera il codice campione

Pagamento o download da GitHub:

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

Scarica l'SDK Firebase

MacOS/Linux:

sh download.sh

Windows (da PowerShell):

./download.ps1

Puoi anche scaricare manualmente l'SDK. In questo caso, l'SDK Firebase C++ deve essere estratto in /third_party in modo che una cartella denominata firebase_cpp_sdk abbia la radice CMakeLists.txt dell'SDK Firebase al suo interno.

3. Esegui il gioco di esempio

Innanzitutto, prova il gioco di esempio e assicurati che tutto funzioni. È un semplice runner infinito con un livello generato proceduralmente e un singolo pulsante per saltare.

  1. Seleziona File > Nuovo > Importa progetto (o seleziona Importa progetto dalla schermata iniziale)
  2. Apri la cartella proj.android/ inclusa nel repository
  1. [Facoltativo] Apri proj.android/gradle.properties e vai PROP_APP_ABI. Puoi rimuovere tutte le architetture di destinazione tranne quelle di destinazione per ridurre i tempi di compilazione. PROP_APP_ABI=x86 creerà solo per l'emulatore PROP_APP_ABI=armeabi-v7a per la maggior parte degli smartphone
  2. Fai clic sul pulsante Debug fa7d6449514b13c3.png per creare ed eseguire il gioco. La creazione del motore grafico Cocos2dx richiederà del tempo.

4. Configurazione della console Firebase

  1. Crea un nuovo progetto nella Console Firebase. 5d2552e8450338d3.png
  2. Scegli un nome come "popsicle Runner"
  3. Abilita Analytics 255468f27832bb18.png
  4. Aggiungi o crea un account Analytics c7fa1b1004135be3.png
  5. Aggiungi una nuova app per Android al progetto 984b9f20cd590597.png
  6. Aggiungi com.firebase.popsiclerunner come nome del pacchetto.

fda079aab5b185d4.png

  1. Scarica il file google-services.json e copialo in proj.android/app 95aae8dd12033335.png
  1. Ignora le istruzioni fornite per aggiungere l'SDK Firebase e fai clic su Avanti
  2. Puoi fare clic su "Ignora questo passaggio" quando ti viene chiesto di verificare l'installazione

5. Aggiungi Firebase al tuo gioco

Aggiungi l'SDK Firebase a CMakeLists.txt

Apri il livello principale CMakeLists.txt. Dovrebbe avere il seguente codice nella parte superiore

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

e aggiungi le seguenti righe alla fine del file 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 include l'SDK Firebase C++ e lo rende disponibile per questo gioco

target_link_libraries collega il gioco con le librerie C++ di Firebase create per Android.

Aggiungi il plug-in dei servizi Google

Per collegare l'SDK Firebase, devi aggiungere il plug-in dei servizi Google allo script di build di Gradle. Per farlo, apri il file build.gradle a livello di progetto (nella cartella proj.android). E aggiungi classpath 'com.google.gms:google-services:4.3.3' come dipendenza del 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
    }
}

Quindi, aggiungi il plug-in al file build.gradle a livello di modulo (nella cartella proj.android/app). Aggiungi apply plugin: 'com.google.gms.google-services' sotto apply plugin: 'com.android.application':

build.gradle

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

Individua l'SDK C++ in Gradle

Per indicare a Gradle dove trovare l'SDK Firebase C++, aggiungi le seguenti righe in fondo al file settings.gradle.

settings.gradle

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

Aggiungi le dipendenze Android

Per collegare le dipendenze di Android per Firebase, apri il file Gradle a livello di modulo per popsicle_runner (in proj.android/app/build.gradle) e aggiungi quanto segue poco prima della tipica sezione dependences { alla fine:

build.gradle

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

AndroidX e Jetifier

Per aggiungere il supporto di AndroidX e Jetifier, apri gradle.properties e aggiungi questo testo alla fine:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Inizializza Firebase nel tuo gioco

Inizializza Firebase nel gioco aprendo Classes/AppDelegate.cpp. Aggiungi le seguenti istruzioni #include all'inizio:

AppDelegate.cpp

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

Poi aggiungi App::Create e inizializza le funzionalità Firebase di cui hai bisogno. Per farlo, trova AppDelegate::applicationDidFinishLaunching e aggiungi questo codice prima del giorno auto scene = MainMenuScene::createScene():

AppDelegate.cpp

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

Se esegui il debug del gioco e aggiorni la dashboard di Firebase, dopo circa un minuto dovrebbe apparire un nuovo utente.

6. Aggiungi dati e analisi

Anche nelle fasi iniziali di sviluppo, i dati e le analisi sono uno strumento utile per valutare l'interazione dei beta tester con il gioco. Esistono alcune analisi che vengono raccolte automaticamente, come i report sulla fidelizzazione, ma è utile aggiungere eventi personalizzati per il tuo gioco specifico.

Un buon punto di partenza è registrare un evento di analisi quando il giocatore inizia un livello. Possiamo utilizzare il numero di eventi di inizio livello per vedere la frequenza con cui un giocatore potrebbe ripetere la partita in una sessione.

4b5df08c0f6b6938.png

Inoltre, in caso di decesso del giocatore, viene registrato anche un evento che indica la distanza percorsa. In questo modo potremo vedere in che modo le modifiche che apportiamo cambiano la durata di una singola sessione e ci aiuterà a determinare se i giocatori preferiscono una partita più breve/più difficile o più lunga/facile.

Aggiungi intestazioni Analytics

Apri Classes/PopsicleScene.cpp e aggiungi intestazioni Firebase in alto per consentirci di effettuare chiamate per l'analisi.

PopsicleScene.cpp

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

Registra un evento Inizio livello

Per registrare un evento quando questa scena viene organizzata dal Director di Cocos2dx, trova la funzione simulata PopsicleScene::onEnter(). Inserisci il seguente codice per registrare l'evento Inizio livello qui:

PopsicleScene.cpp

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

Registra un evento di fine livello

Per vedere i risultati di un giocatore, registriamo un evento di fine livello con la distanza percorsa dal giocatore quando è morto. Per farlo, trova PopsicleScene::gameOver() e aggiungilo alla fine del blocco if(!_gameOver) { prima di impostare _gameOver = true;:

PopsicleScene.cpp

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

kEventLevelEnd è l'evento di fine livello. mentre "distance" è un "parametro evento". Qui stiamo aggiungendo l'ultima distanza registrata, che è una buona approssimazione della distanza percorsa un giocatore prima di morire.

7. Test degli eventi

Ora puoi fare clic su Debug fa7d6449514b13c3.png, ma occorrerà un po' di tempo prima che gli eventi vengano registrati nella dashboard di Analytics. I motivi sono due: 1) gli eventi vengono raggruppati e caricati circa una volta all'ora per risparmiare batteria e 2) i report vengono generati ogni 24 ore.

Attivazione della modalità di debug

È comunque possibile eseguire il debug degli eventi di Analytics attivando la modalità di debug sul dispositivo.

Innanzitutto, assicurati di avere installato e configurato Android Debug Bridge (ADB). L'inserimento di adb devices dovrebbe mostrare il dispositivo su cui intendi eseguire il test:

$ adb devices
List of devices attached
emulator-5554   device

Quindi esegui questo comando adb shell:

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

In questo modo, comunichi a Firebase Analytics di registrare immediatamente gli eventi e li escluderà automaticamente dai normali report per evitare di inquinare gli eventi dal vivo durante i test. Se desideri annullare questa azione in un secondo momento, è sufficiente scrivere:

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

Visualizzazione degli eventi

Apri "DebugView" nella tua console Firebase 84472ac3a7ad9aff.png

Fai clic su Esegui il debug di fa7d6449514b13c3.png e inizia a giocare. I nuovi eventi verranno visualizzati quasi immediatamente dopo che si sono verificati nel gioco. 5e81dfa682497414.png

Se espandi l'evento level_end, vedrai anche la "distanza" personalizzata che hai registrato. 4451be4a6a97399c.png

8. Ricerca tester in corso...

Dovrai poi far attenzione al gioco, a prescindere dal fatto che si tratti di utenti interni al tuo studio, di amici stretti o della community. Firebase App Distribution è un ottimo modo per invitare i giocatori a giocare.

Creazione di un file binario autonomo

Innanzitutto crea un APK autonomo da condividere da Build > Creare bundle/APK > APK di build 14c6bd5549cdb57a.png

Android Studio mostrerà una finestra di dialogo che ti consente di individuare il file creato. Se non l'hai ancora fatto, puoi fare clic su "Log eventi". per recuperare il link. ac730e3428689c4c.png

Carica su Firebase App Distribution

  1. Apri App Distribution e fai clic su "Inizia" dcdafea94e4c1c15.png
  2. Trascina il file .apk nella casella con il messaggio "Trascina qui un file .apk per creare una nuova release". 4b6f94a05391c63f.png
  3. Inserisci il tuo indirizzo email come primo tester. ce047d710befa44a.png
  4. Fai clic su Avanti.
  5. Aggiungi una descrizione e fai clic su Distribuisci

Invita tester

Anziché dover inserire manualmente ogni indirizzo email, puoi creare un link di invito. Quando acquisisci un utente con questo link di invito, puoi anche aggiungerlo a un gruppo di tester. Ad esempio, potrai separare i tester interni da quelli esterni.

  1. Fai clic su "Tester e "Gruppi" 7e380773faff4eb7.png
  2. Crea un nuovo gruppo (6b046c010b14adaf.png) e assegnagli un nome, ad esempio "Android Testers".
  3. Fai clic su "Link di invito" a7fc2c8b01b6883e.png
  4. Fai clic su "Nuovo link di invito"
  5. Imposta qui il gruppo dal menu a discesa. d1b289e825d93d40.png
  6. Fai clic su "Crea link"
  7. Fai clic su "Copia link". e condividilo come desideri

9. Complimenti

Hai aggiunto correttamente dati e analisi al tuo gioco basato su C++, hai invitato alcuni amici a giocare e sai come trovare e collegare le librerie Firebase in un sistema di build basato su CMake e Gradle comune nello sviluppo di Android.

Argomenti trattati

  • Come aggiungere Firebase al tuo gioco basato su Android CMake.
  • Come capire quali dipendenze C++ e Gradle ti servono.
  • Come registrare gli eventi di Analytics.
  • Come eseguire il debug degli eventi di analisi.
  • Come condividere il tuo gioco con App Distribution.

Passaggi successivi

  • Prova ad accedere a un utente in modo anonimo e a salvare il suo punteggio più alto in Realtime Database.
  • Registra gli eventi di Analytics nel tuo gioco.
  • Prova ad aggiungere dati e analisi a un gioco per iOS.

Scopri di più