Classifiche nei giochi Android

Questa guida mostra come utilizzare le API Classifica in un'app per Android per creare classifiche visive, registrare il punteggio di un giocatore e confrontare il punteggio con quello 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 consultare i concetti relativi ai giochi delle classifiche.

Prima di iniziare a programmare utilizzando le API Leaderboard:

Ottieni il client Leaderboard

Per iniziare a utilizzare l'API Leaderboards, il gioco deve prima ottenere un oggetto LeaderboardsClient. Per farlo, chiama il metodo Games.getLeadeboardsClient() e trasmette l'attività.

Aggiornare il punteggio del giocatore

Quando il punteggio del giocatore cambia (ad esempio, quando il giocatore finisce di giocare), il gioco può aggiornare il suo punteggio nella classifica chiamando LeaderboardsClient.submitScore(), inserendo l'ID della classifica e il valore del punteggio non elaborato.

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

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

È buona norma definire l'ID della 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 player, assicurati di seguire anche queste best practice per evitare di superare la quota API.

Visualizzare una classifica

Per visualizzare la classifica, chiama il numero LeaderboardsClient.getLeaderboardIntent() per ottenere un Intent per creare l'interfaccia utente predefinita per la classifica. Il gioco potrà quindi visualizzare l'interfaccia utente chiamando startActivityForResult.

Il seguente snippet di codice mostra come la tua app può aggiornare il punteggio del player. 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() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Anche se non viene restituito alcun risultato, devi utilizzare startActivityForResult per consentire all'API di ottenere l'identità del pacchetto chiamante. Di seguito è mostrato un esempio dell'interfaccia utente della classifica predefinita.