Bestenlisten in Android Game

In diesem Leitfaden erfahren Sie, wie Sie mit Bestenlisten-APIs in einer Android-App visuelle Bestenlisten erstellen, die Punktzahl von Spielern erfassen und diese mit der Punktzahl von Spielern aus vorherigen Spielsitzungen vergleichen können. Die APIs finden Sie in den Paketen com.google.android.gms.games und com.google.android.gms.games.leaderboards.

Hinweis

Falls noch nicht geschehen, solltest du dir die Konzepte der Bestenlisten für Spiele ansehen.

Bevor Sie mit den APIs für Bestenlisten programmieren, sollten Sie Folgendes tun:

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 von Spielern aktualisieren

Wenn sich die Punktzahl des Spielers ändert (z. B. nach Beendigung des Spiels), kann das Spiel seine Punktzahl in der Bestenliste aktualisieren. Dazu wird LeaderboardsClient.submitScore() aufgerufen und die ID der Bestenliste sowie der Punktzahl-Rohwert übergeben.

Das folgende Code-Snippet zeigt, wie deine App den Spielstand aktualisieren kann:

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

Es empfiehlt sich, die Bestenlisten-ID in Ihrer strings.xml-Datei zu definieren, damit Ihr Spiel auf die Bestenlisten anhand der Ressourcen-ID verweisen kann. Achte beim Aufrufen von Updates und beim Laden der Punktzahlen des Spielers außerdem auf diese Best Practices, damit dein API-Kontingent nicht überschritten wird.

Bestenliste anzeigen

Um die Bestenliste anzuzeigen, rufen Sie LeaderboardsClient.getLeaderboardIntent() auf, um einen Intent zu erhalten und die Standardbenutzeroberfläche der Bestenliste zu erstellen. Ihr Spiel kann dann durch Aufrufen von startActivityForResult die Benutzeroberfläche aufrufen.

Das folgende Code-Snippet zeigt, wie deine App den Spielstand 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 wir startActivityForResult verwenden, damit die API die Identität des aufrufenden Pakets abrufen kann. Unten sehen Sie ein Beispiel für die Standard-UI für die Bestenliste.