Classifiche nel gioco Android

Questa guida mostra come utilizzare le API leaderboard in un'applicazione per Android per creare classifiche visive, registrare il punteggio di un giocatore e confrontare il punteggio rispetto al punteggio delle sessioni di gioco precedenti del giocatore. Puoi trovare le API in com.google.android.gms.games e com.google.android.gms.games.leaderboards pacchetti.

Prima di iniziare

Se non l'hai ancora fatto, potrebbe essere utile consultare il concetti dei giochi nelle classifiche.

Prima di iniziare a programmare con le API leaderboard:

Ottenere il client leaderboard

Per iniziare a utilizzare l'API leaderboard, il gioco deve prima ottenere un oggetto LeaderboardsClient. Puoi farlo chiamando il metodo Games.getLeadeboardsClient() e passando il valore-chiave e l'attività GoogleSignInAccount del player corrente. Per scoprire come recuperare dati dell'account del giocatore, consulta la sezione Accedere ai giochi Android.

Aggiornamento del punteggio del giocatore

Quando il punteggio del giocatore cambia (ad esempio, quando il giocatore finisce la partita), i tuoi può aggiornare il proprio punteggio in classifica chiamando LeaderboardsClient.submitScore(), e passando l'ID della classifica e il valore del punteggio non elaborato.

Il seguente snippet di codice mostra in che modo l'app può aggiornare il punteggio del giocatore:

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

È buona norma definire l'ID classifica nel file strings.xml, quindi il tuo gioco può fare riferimento alle classifiche in base all'ID risorsa. Quando effettui chiamate a aggiorna e carica i punteggi dei giocatori, segui anche queste best practice per evitare di superare la quota API.

Visualizzazione di una classifica

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

Il seguente snippet di codice mostra in che modo l'app può aggiornare il punteggio del giocatore. Nella snippet di codice, RC_LEADERBOARD_UI è un numero intero arbitrario per il codice di 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);
        }
      });
}

Nota che anche se non viene restituito alcun risultato, dobbiamo usare startActivityForResult in modo che l'API possa ottenere l'identità del pacchetto chiamante. Un esempio delle metriche predefinite di seguito è mostrata l'interfaccia utente della classifica.