Tabele wyników w grach na Androida

Ten przewodnik pokazuje, 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 znajdziesz w pakietach com.google.android.gms.gamescom.google.android.gms.games.leaderboards.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiono, warto zapoznać się z pojęciami dotyczącymi gier z tablicami wyników.

Zanim zaczniesz pisać kod z użyciem interfejsów API tablic wyników:

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 przekaż aktywność.

Aktualizowanie wyniku gracza

Gdy wynik gracza się zmieni (np. po zakończeniu gry), 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:

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 za pomocą identyfikatora zasobu. Podczas wywoływania funkcji aktualizowania i wczytywania wyników graczy postępuj zgodnie z tymi sprawdzonymi metodami, aby uniknąć przekroczenia limitu interfejsu API.

Wyświetlanie tabeli wyników

Aby wyświetlić tabelę wyników, wywołaj funkcję LeaderboardsClient.getLeaderboardIntent(), aby uzyskać Intent, która utworzy domyślny interfejs użytkownika tabeli wyników. Gra może wtedy wyświetlić interfejs, wywołując funkcję startActivityForResult.

Poniższy fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza. We fragmencie kodu RC_LEADERBOARD_UI to dowolna liczba całkowita oznaczająca kod żą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);
        }
      });
}

Nawet jeśli nie jest zwracany ż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 tablicy wyników.