Classifiche nel gioco Android

Questa guida mostra come utilizzare le API Leaderboard in un'applicazione Android per creare classifiche visive, registrare il punteggio di un giocatore e confrontare il punteggio del giocatore con le 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 già fatto, potresti trovare utile ripassare i concetti dei giochi leaderboard.

Prima di iniziare a programmare utilizzando le API leaderboard:

Ottenere il client leaderboard

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

Aggiornamento del punteggio del giocatore in corso...

Quando il punteggio del giocatore cambia (ad esempio, quando il giocatore completa la partita), può aggiornare il suo punteggio nella classifica chiamando LeaderboardsClient.submitScore() e trasmettendo 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 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 anche di seguire queste best practice per evitare di superare la quota API.

Visualizzazione di una classifica

Per visualizzare la classifica, chiama LeaderboardsClient.getLeaderboardIntent() per ottenere un Intent che consente di creare l'interfaccia utente predefinita per la classifica. Il gioco potrà richiamare 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 di 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);
        }
      });
}

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 per le classifiche.