Ereignisse für Android-Spiele

In diesem Leitfaden erfährst du, wie du mithilfe der von den Google Play-Spieldiensten bereitgestellten Event-APIs Spieldaten für Spielanalysen sammelst. Sie finden die APIs in com.google.android.gms.games.event und com.google.android.gms.games.

Vorbereitung

Es kann hilfreich sein, die Konzepte von Ereignisspielen noch einmal durchzugehen, falls Sie dies noch nicht getan haben.

Bevor Sie mit dem Programmieren mit den Event-APIs beginnen:

Ereignis-Client abrufen

Damit du die Event-APIs verwenden kannst, muss dein 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 Code in Ihrem Spiel hinzufügen, um die Play-Spieldienste jedes Mal zu benachrichtigen, wenn ein Ereignis von Interesse an Ihrem Spiel auftritt.

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

  • Die eventId wird von den Play-Spieldiensten generiert, wenn du das Ereignis zum ersten Mal in der Google Play Console definierst, und wird verwendet, um dieses Ereignis in deinem Spiel eindeutig zu identifizieren.
  • Mit der Eingabe incrementAmount können Sie den quantitativen Fortschritt des Spielers zum Erreichen eines spielspezifischen Ziels angeben. Wenn das Ereignis, das Ihr Spiel erfassen möchte, beispielsweise „Besiegen Sie 500 fehleraugende Monster“ ist, kann der Wert incrementAmount die Anzahl der Monster sein, die der Spieler in einer einzelnen Schlacht getötet hat.

Hier ein Beispiel für das Einreichen eines Ereignisses mit einem inkrementellen Wert von 1:

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

Ereignisse abrufen

Du kannst alle Ereignisdaten, die für dein Spiel auf den Google-Servern gespeichert sind, durch Aufrufen von EventsClient.load() abrufen. Übergeben Sie im Methodenaufruf einen booleschen Wert, um anzugeben, ob die Play-Spieldienste die lokal zwischengespeicherten Daten auf dem Gerät des Nutzers löschen sollen.

Wenn Sie Daten für bestimmte Ereignisse abrufen möchten, die Sie in der Google Play Console definiert haben, rufen Sie EventsClient.loadByIds() auf und übergeben Sie in den Eingabeparametern ein Array von Ereignis-IDs.

Das folgende Snippet zeigt, wie Sie die Liste aller Ereignisse für Ihr Spiel über die Play-Spieldienste abrufen 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);
          }
        }
      });
}