Erfolge in Android-Spielen

In diesem Leitfaden erfahren Sie, wie Sie die Erfolgs-APIs in einer Android-App nutzen können, um Erfolge in Ihrem Spiel zu entsperren und anzuzeigen. Die APIs finden Sie in den Paketen com.google.android.gms.games und com.google.android.gms.games.achievements.

Hinweis

Falls Sie es noch nicht getan haben, kann es hilfreich sein, sich die Konzepte des Erfolgs von Spielen durchzulesen.

Bevor Sie mit der Achievements API programmieren, sollten Sie Folgendes tun:

Erfolgsclient abrufen

Damit Sie die Erfolge API verwenden können, muss Ihr Spiel zuerst ein AchievementsClient-Objekt abrufen. Rufe dazu die Methode Games.getAchievementClient() auf und übergib die Aktivität und den GoogleSignInAccount für den aktuellen Spieler. Informationen zum Abrufen der Spielerkontoinformationen findest du unter In Android Games anmelden.

Erfolge freischalten

Rufen Sie zum Entsperren eines Erfolgs die Methode AchievementsClient.unlock() auf und übergeben Sie die Erfolgs-ID.

Das folgende Code-Snippet zeigt, wie Sie mit Ihrer App Erfolge freischalten können:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

Wenn der Erfolg vom Typ inkrementell ist (es sind also mehrere Schritte erforderlich, um ihn zu entsperren), rufen Sie stattdessen AchievementsClient.increment() auf.

Das folgende Code-Snippet zeigt, wie deine App den Erfolg des Spielers steigern kann:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

Sie müssen keinen zusätzlichen Code schreiben, um den Erfolg zu entsperren. Die Google Play-Spieldienste entsperren den Erfolg automatisch, sobald die erforderliche Anzahl von Schritten erreicht ist.

Es ist sinnvoll, die Erfolgs-IDs in der Datei strings.xml zu definieren, damit Ihr Spiel die Erfolge anhand der Ressourcen-ID referenzieren kann. Beachten Sie beim Aufrufen und Aktualisieren von Erfolgen unbedingt die folgenden Best Practices, damit Ihr API-Kontingent nicht überschritten wird.

Erfolge anzeigen

Um die Erfolge eines Spielers anzuzeigen, rufen Sie AchievementsClient.getAchievementsIntent() auf. Sie erhalten dann einen Intent zum Erstellen der Standardoberfläche für Erfolge. Ihr Spiel kann dann durch Aufrufen von startActivityForResult die Benutzeroberfläche aufrufen.

Das folgende Code-Snippet zeigt, wie die App die Standardoberfläche für Erfolge anzeigt. Im Snippet ist RC_ACHIEVEMENT_UI eine beliebige Ganzzahl, die das Spiel als Anfragecode verwendet.

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

Unten sehen Sie ein Beispiel für die Standardoberfläche für Erfolge.