Ereignisse in Android-Spielen

In diesem Leitfaden erfahren Sie, wie Sie mit den Ereignis-APIs der Google Play-Spieldienste Spieldaten für die Spieleranalyse erfassen. Die APIs finden Sie in com.google.android.gms.games.event und com.google.android.gms.games.

Hinweis

Falls Sie es noch nicht getan haben, könnte es hilfreich sein, sich mit den Konzepten der Spielereignisse vertraut zu machen.

Vor dem Programmieren mit den Event APIs:

Ereignisclient abrufen

Damit Sie die Event APIs verwenden können, muss Ihr Spiel zuerst ein EventsClient-Objekt abrufen. Rufen Sie dazu die Methode Games.getEventsClient() auf und übergeben Sie die Aktivität.

Ereignisse einreichen

Sie können in Ihrem Spiel Code hinzufügen, um die Google Play-Spieldienste zu benachrichtigen, wenn ein Ereignis von Interesse für Ihr Spiel auftritt.

Rufen Sie zum Senden einer Ereignisaktualisierung EventsClient.increment() mit dem Wert eventId und einer Ganzzahl incrementAmount auf, die größer oder gleich 0 ist.

  • Die eventId wird von den Google Play-Spieldiensten generiert, wenn du das Ereignis zum ersten Mal in der Google Play Console definierst, und dieses Ereignis wird in deinem Spiel eindeutig identifiziert.
  • Sie können mit der Eingabe incrementAmount den quantitativen Fortschritt des Spielers zum Erreichen eines spielspezifischen Ziels angeben. Wenn das Ereignis, das Ihr Spiel erfassen möchte, beispielsweise „500 Bug eyed Monsters“ bekämpfen, kann der Wert incrementAmount die Anzahl der Monster sein, die der Spieler in einem einzigen Kampf getötet hat.

Hier ein Beispiel für das Senden eines Ereignisses mit dem Inkrementbetrag 1:

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

Ereignisse werden abgerufen

Mit EventsClient.load() können Sie alle Ereignisdaten für Ihr Spiel auf den Google-Servern abrufen. Übergeben Sie im Methodenaufruf einen booleschen Wert, um anzugeben, ob die Google Play-Spieldienste die lokal im Cache gespeicherten Daten auf dem Gerät des Nutzers löschen sollen.

Rufen Sie EventsClient.loadByIds() auf und übergeben Sie ein Array von Ereignis-IDs in den Eingabeparametern, um Daten für bestimmte Ereignisse abzurufen, die Sie in der Google Play Console definiert haben.

Im folgenden Snippet sehen Sie, wie Sie die Google Play-Spieldienste nach der Liste aller Ereignisse für Ihr Spiel abfragen können:

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