Eventi per i giochi Android

Questa guida mostra come raccogliere i dati di gioco dei giocatori per l'analisi del gioco utilizzando le API degli eventi fornite da Google Play Services per i giochi. Le API sono disponibili nei pacchetti com.google.android.gms.games.event e com.google.android.gms.games.

Prima di iniziare

Se non l'hai ancora fatto, potrebbe esserti utile rivedere i concetti di gioco degli eventi.

Prima di iniziare a scrivere codice utilizzando le API per gli eventi:

Scarica il client eventi

Per iniziare a utilizzare le API Events, il tuo gioco deve prima ottenere un oggetto EventsClient. Puoi farlo chiamando il metodo PlayGames.getEventsClient() e passando l'attività.

Inviare eventi

Puoi aggiungere codice al tuo gioco per inviare una notifica a Play Games Services ogni volta che si verifica un evento di interesse per il tuo gioco.

Per inviare un aggiornamento dell'evento, chiama EventsClient.increment() con il valore eventId e un numero intero incrementAmount maggiore o uguale a 0.

  • L'eventId viene generato da Play Games Services quando definisci per la prima volta l'evento in Google Play Console e viene utilizzato per identificare in modo univoco questo evento nel tuo gioco.

  • Puoi utilizzare l'input incrementAmount per specificare l'avanzamento quantitativo del giocatore verso il completamento di un obiettivo specifico del gioco. Ad esempio, se l'evento che il tuo gioco vuole monitorare è "Sconfiggi 500 mostri con gli occhi a palla", il valore di incrementAmount può essere il numero di mostri uccisi dal giocatore in una singola battaglia.

Ecco un esempio di come inviare un evento con un importo di incremento pari a 1:

public void submitEvent(String eventId) {
  PlayGames.getEventsClient(this)
      .increment(eventId, 1);
}

Recuperare eventi

Puoi recuperare tutti i dati sugli eventi memorizzati nei server di Google per il tuo gioco chiamando EventsClient.load(). Nella chiamata al metodo, trasmetti un valore booleano per indicare se Play Games Services deve cancellare i dati memorizzati nella cache locale sul dispositivo dell'utente.

Per recuperare i dati di eventi specifici che hai definito nella console Google Play, chiama EventsClient.loadByIds() e trasmetti un array di ID evento nei parametri di input.

Il seguente snippet mostra come puoi eseguire query sui servizi per i giochi di Play per ottenere l'elenco di tutti gli eventi per il tuo gioco:

public void loadEvents() {
  PlayGames.getEventsClient(this)
      .load(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) {
          if (task.isSuccessful()) {
            // Process all the events.
            for (Event event : task.getResult().get()) {
              Log.d(TAG, "loaded event " + event.getName());
            }
          } else {
            // Handle Error
            Exception exception = task.getException();
            int statusCode = CommonStatusCodes.DEVELOPER_ERROR;
            if (exception instanceof ApiException) {
              ApiException apiException = (ApiException) exception;
              statusCode = apiException.getStatusCode();
            }
            showError(statusCode);
          }
        }
      });
}