Tabele wyników w grach na Androida

W tym przewodniku pokazujemy, jak używać interfejsów API tabel wyników w aplikacji na Androida do tworzenia wizualnych tabel wyników, rejestrowania wyników graczy i porównywania ich z wynikami gracza z poprzednich sesji. Interfejsy API można znaleźć w pakietach com.google.android.gms.games i com.google.android.gms.games.leaderboards.

Zanim zaczniesz

Warto zapoznać się z pomysłami na gry z tabelą wyników.

Zanim zaczniesz tworzyć kod z wykorzystaniem interfejsów API tabel wyników:

Pobierz klienta tabel wyników

Aby zacząć korzystać z interfejsu leaderboards API, Twoja gra musi najpierw uzyskać obiekt LeaderboardsClient. Możesz to zrobić, wywołując metodę Games.getLeadeboardsClient() i przekazując aktywność.

Zaktualizuj wynik gracza

Gdy wynik gracza się zmieni (np. gdy zakończy grę), Twoja gra może zaktualizować jego wynik w tabeli wyników. W tym celu wywołaj LeaderboardsClient.submitScore() i przekażesz identyfikator tabeli wyników oraz nieprzetworzoną wartość wyniku.

Ten fragment kodu pokazuje, jak aplikacja może aktualizować wynik gracza:

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

Warto zdefiniować identyfikator tabeli wyników w pliku strings.xml, aby gra mogła odwoływać się do tabel według identyfikatora zasobu. Podczas wywoływania aktualizacji i wczytywania wyników graczy pamiętaj o przestrzeganiu tych sprawdzonych metod, aby nie przekroczyć limitu interfejsu API.

Wyświetlanie tabeli wyników

Aby wyświetlić tabelę wyników, wywołaj LeaderboardsClient.getLeaderboardIntent(), aby uzyskać Intent i utworzyć domyślny interfejs tablicy wyników. Interfejs może zostać wyświetlony przez grę, wywołując metodę startActivityForResult.

Ten fragment kodu pokazuje, jak aplikacja może aktualizować wynik gracza. We fragmencie kodu RC_LEADERBOARD_UI jest dowolną liczbą całkowitą w kodzie żądania.

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);
        }
      });
}

Mimo że nie zostanie zwrócony żaden wynik, musisz użyć startActivityForResult, aby interfejs API mógł uzyskać tożsamość pakietu wywołującego. Poniżej znajdziesz przykład domyślnego interfejsu użytkownika.