Z tego przewodnika dowiesz się, jak używać interfejsów API tabel wyników w aplikacji na Androida, aby tworzyć wizualne tabele wyników, rejestrować wyniki graczy i porównywać je z wynikami z poprzednich sesji gry. Interfejsy API znajdują się w pakietach com.google.android.gms.games
i com.google.android.gms.games.leaderboards
.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, warto zapoznać się z koncepcjami dotyczącymi tabeli liderów.
Zanim zaczniesz kodować przy użyciu interfejsów API tablic wyników:
Aby zainstalować i skonfigurować aplikację do korzystania z usług gier Google Play, wykonaj instrukcje podane w przewodniku Konfigurowanie pakietu SDK Usług Google Play.
Określ tabele wyników, które mają być wyświetlane lub aktualizowane przez grę, wykonując instrukcje podane w przewodniku po Konsoli Google Play.
Pobierz i przejrzyj przykłady kodu związanych z tablicami wyników na stronie z przykładami kodu na Androida w GitHub.
Zapoznaj się z rekomendacjami opisanymi w kontrolnej liście jakości.
Pobieranie klienta tabel wyników
Aby zacząć korzystać z interfejsu API tabel wyników, gra musi najpierw uzyskać obiekt LeaderboardsClient
.
Aby to zrobić, wywołaj metodę PlayGames.getLeadeboardsClient()
i podaj w niej aktywność.
Zmień wynik gracza
Gdy wynik gracza ulegnie zmianie (np. gdy ukończy on grę), gra może zaktualizować jego wynik na tablicy wyników, wywołując funkcję LeaderboardsClient.submitScore()
, przekazując identyfikator tablicy wyników i wartość surowego wyniku.
Ten fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza:
PlayGames.getLeaderboardsClient(this) .submitScore(getString(R.string.leaderboard_id), 1337);
Dobrą praktyką jest zdefiniowanie identyfikatora tabeli wyników w pliku strings.xml
, aby gra mogła się do niej odwoływać za pomocą identyfikatora zasobu. Podczas wykonywania wywołań w celu aktualizowania i wczytywania wyników graczy pamiętaj też o tych sprawdzonych metodach, aby nie przekroczyć limitu interfejsu API.
Wyświetlanie tabeli wyników
Aby wyświetlić tabelę wyników, wywołaj funkcję LeaderboardsClient.getLeaderboardIntent()
, aby uzyskać wartość Intent
, która służy do utworzenia domyślnego interfejsu tabeli wyników. Gra może wywołać interfejs użytkownika, wywołując funkcję startActivityForResult
.
Ten fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza. W tym fragmencie kodu RC_LEADERBOARD_UI
to dowolna liczba całkowita dla kodu żą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 zwraca żadnych wyników, musisz użyć parametru startActivityForResult
, aby interfejs API mógł uzyskać tożsamość wywołującego pakietu. Poniżej znajdziesz przykład interfejsu domyślnej tabeli wyników.