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 liderów na stronie z przykładami na Androida.
- 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ę Games.getLeadeboardsClient()
, przekazując w niej aktywność i GoogleSignInAccount
dla bieżącego odtwarzacza. Aby dowiedzieć się, jak pobrać informacje o koncie gracza, przeczytaj artykuł Logowanie się w Grach Play.
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()
i przekazując identyfikator tablicy wyników oraz wartość surowego wyniku.
Ten fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza:
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(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 wyświetlić interfejs, 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() { 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); } }); }
Zwróć uwagę, że mimo że nie zwracamy żadnego wyniku, musimy użyć parametru startActivityForResult
, aby interfejs API mógł uzyskać tożsamość pakietu wywołującego. Poniżej przedstawiamy przykład domyślnego interfejsu tabeli liderów.