Bestenlisten in Android-Spielen

In diesem Leitfaden erfahren Sie, wie Sie mit APIs für Bestenlisten in einer Android-App visuelle Bestenlisten erstellen, die Punktzahl eines Spielers aufzeichnen und diese mit der Punktzahl des Spielers aus früheren Spielsitzungen vergleichen. Sie finden die APIs in den Paketen com.google.android.gms.games und com.google.android.gms.games.leaderboards.

Vorbereitung

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

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

Client für Bestenlisten abrufen

Damit Sie die Bestenlisten-API verwenden können, muss Ihr Spiel zuerst ein LeaderboardsClient-Objekt abrufen. Rufen Sie dazu die Methode Games.getLeadeboardsClient() auf und übergeben Sie die Aktivität.

Punktzahl des Spielers aktualisieren

Wenn sich die Punktzahl eines Spielers ändert (z. B. wenn der Spieler das Spiel beendet), kann die Punktzahl in Ihrem Spiel in der Bestenliste aktualisiert werden, indem LeaderboardsClient.submitScore() aufgerufen und die ID der Bestenliste sowie der Punktzahl-Rohwert übergeben werden.

Das folgende Code-Snippet zeigt, wie Ihre App die Punktzahl des Spielers aktualisieren kann:

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

Es empfiehlt sich, die Bestenlisten-ID in der Datei strings.xml zu definieren, damit Ihr Spiel anhand der Ressourcen-ID auf die Bestenlisten verweisen kann. Wenn Sie Spielerpunktzahlen aktualisieren und laden, sollten Sie außerdem diese Best Practices befolgen, damit Ihr API-Kontingent nicht überschritten wird.

Bestenliste anzeigen

Rufe zum Anzeigen von Bestenlisten LeaderboardsClient.getLeaderboardIntent() auf, um ein Intent-Element abzurufen, mit dem die Standardbenutzeroberfläche für Bestenlisten erstellt wird. In Ihrem Spiel kann dann durch Aufrufen von startActivityForResult die Benutzeroberfläche aufgerufen werden.

Das folgende Code-Snippet zeigt, wie Ihre App die Punktzahl des Spielers aktualisieren kann. Im Code-Snippet ist RC_LEADERBOARD_UI eine beliebige Ganzzahl für den Anfragecode.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Auch wenn kein Ergebnis zurückgegeben wird, müssen Sie startActivityForResult verwenden, damit die API die Identität des aufrufenden Pakets abrufen kann. Unten siehst du ein Beispiel für die standardmäßige Benutzeroberfläche für Bestenliste.