Classifiche nei giochi Android

A seguito del ritiro dell'API Google Sign-In, rimuoveremo l'SDK v1 per i giochi nel 2026. Dopo febbraio 2025, non potrai pubblicare su Google Play titoli che sono stati integrati di recente con l'SDK v1 per i giochi. Ti consigliamo di utilizzare l'SDK v2 per i giochi.
Anche se i titoli esistenti con le precedenti integrazioni di giochi v1 continueranno a funzionare per un paio di anni, ti consigliamo di eseguire la migrazione alla v2 a partire da giugno 2025.
Questa guida riguarda l'utilizzo dell'SDK v1 dei servizi per i giochi di Play. Per informazioni sull'ultima versione dell'SDK, consulta la documentazione della versione 2.

Questa guida mostra come utilizzare le API delle classifiche in un'applicazione Android per creare classifiche visive, registrare il punteggio di un giocatore e confrontarlo con il punteggio del giocatore delle sessioni di gioco precedenti. Le API sono disponibili nei pacchetti com.google.android.gms.games e com.google.android.gms.games.leaderboards.

Prima di iniziare

Se non l'hai ancora fatto, potrebbe esserti utile rivedere i concetti di gioco delle classifiche.

Prima di iniziare a scrivere codice utilizzando le API delle classifiche:

Scarica il client delle classifiche

Per iniziare a utilizzare l'API delle classifiche, il tuo gioco deve prima ottenere un oggetto LeaderboardsClient. Per farlo, chiama il metodo Games.getLeadeboardsClient() e passa l'attività e l'GoogleSignInAccount per il giocatore corrente. Per scoprire come recuperare le informazioni dell'account giocatore, consulta la sezione Accesso nei giochi per Android.

Aggiorna il punteggio del giocatore

Quando il punteggio del giocatore cambia (ad esempio, quando termina la partita), il gioco può aggiornare il punteggio nella classifica chiamando LeaderboardsClient.submitScore() e passando l'ID classifica e il valore del punteggio grezzo.

Il seguente snippet di codice mostra come la tua app può aggiornare il punteggio del giocatore:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

Una buona pratica è definire l'ID classifica nel file strings.xml, in modo che il gioco possa fare riferimento alle classifiche in base all'ID risorsa. Quando effettui chiamate per aggiornare e caricare i punteggi dei giocatori, assicurati di seguire anche queste best practice per evitare di superare la quota API.

Visualizzare una classifica

Per visualizzare la classifica, chiama LeaderboardsClient.getLeaderboardIntent() per ottenere un Intent per creare l'interfaccia utente predefinita della classifica. Il gioco può quindi visualizzare la UI chiamando startActivityForResult.

Il seguente snippet di codice mostra come la tua app può aggiornare il punteggio del giocatore. Nello snippet di codice, RC_LEADERBOARD_UI è un numero intero arbitrario per il codice della richiesta.

private static final int RC_LEADERBOARD_UI = 9004;

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

Tieni presente che, anche se non viene restituito alcun risultato, dobbiamo utilizzare startActivityForResult in modo che l'API possa ottenere l'identità del pacchetto chiamante. Di seguito è riportato un esempio dell'interfaccia utente predefinita della classifica.