Ten przewodnik pokazuje, jak używać interfejsów API tabel wyników w aplikacji na Androida, aby tworzyć wizualne tabele wyników, rejestrować wynik gracza i porównywać go z wynikiem z poprzednich sesji gry. Interfejsy API znajdziesz
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 tabel wyników.
Zanim zaczniesz kodować za pomocą interfejsów API tabel wyników:
Postępuj zgodnie z instrukcjami instalowania i konfigurowania aplikacji do korzystania z Usług Gier Google Play w przewodniku Konfigurowanie pakietu SDK Usług Google Play.
Zdefiniuj tabele wyników, które mają być wyświetlane lub aktualizowane w grze, postępując zgodnie z instrukcjami w przewodniku po Konsoli Google Play.
Pobierz i przejrzyj przykłady kodu tabel wyników na stronie z przykładami na Androida w GitHubie.
Zapoznaj się z zaleceniami opisanymi w Checkliście jakości.
Pobieranie klienta tabel wyników
Aby zacząć korzystać z interfejsu API tabel wyników, gra musi najpierw uzyskać obiekt
LeaderboardsClient.
Możesz to zrobić, wywołując metodę PlayGames.getLeaderboardsClient()
i przekazując aktywność.
Aktualizowanie wyniku gracza
Gdy wynik gracza się zmieni
(np. gdy gracz ukończy grę), gra
może zaktualizować jego wynik w tabeli wyników, wywołując metodę
LeaderboardsClient.submitScore(),
i przekazując identyfikator tabeli wyników oraz wartość surowego wyniku.
Ten fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza:
PlayGames.getLeaderboardsClient(this)
.submitScore(getString(R.string.leaderboard_id), 1337);Dobrym rozwiązaniem jest zdefiniowanie identyfikatora tabeli wyników w pliku strings.xml, aby gra mogła odwoływać się do tabel wyników według identyfikatora zasobu. Podczas wywoływania funkcji aktualizujących i wczytujących wyniki graczy pamiętaj, aby przestrzegać 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 do
utworzenia domyślnego interfejsu tabeli wyników. Następnie gra może wyświetlić
interfejs, wywołując
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); } }); }
Musisz użyć metody startActivityForResult, nawet jeśli nie zwraca ona żadnego wyniku.
Umożliwia to interfejsowi API uzyskanie tożsamości pakietu wywołującego. Na ilustracji poniżej przedstawiono przykład domyślnego interfejsu tabeli wyników.