Tabele wyników w grze na Androida

Z tego przewodnika dowiesz się, jak korzystać z interfejsów API tabel wyników w aplikacji na Androida tworzyć wizualne tabele wyników, zapisywać wyniki i porównywać wyniki z wynikami gracza z poprzednich sesji. Interfejsy API można znaleźć w com.google.android.gms.games i com.google.android.gms.games.leaderboards pakietów.

Zanim zaczniesz

W razie potrzeby zapoznaj się z pomysły na tablice wyników.

Zanim zaczniesz pisać kod za pomocą interfejsów API tabel wyników:

Uzyskiwanie 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() i przekaż oraz GoogleSignInAccount dla bieżącego gracza. Aby dowiedzieć się, jak pobrać informacje o koncie gracza znajdziesz w artykule Logowanie się w grach na Androida.

Aktualizacja wyniku gracza

Gdy zmieni się wynik gracza (np. gdy skończy grę), Twoja gra może zaktualizować swój wynik w tabeli wyników, dzwoniąc do: LeaderboardsClient.submitScore(), identyfikatora tabeli wyników i nieprzetworzonej wartości 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);

Warto zdefiniować identyfikator tabeli wyników w pliku strings.xml, gra może odwoływać się do tabel wyników według identyfikatora zasobu. Gdy dzwonisz do zaktualizuj i wczytaj wyniki graczy, pamiętaj też o tych sprawdzone metody pozwalające uniknąć przekroczenia limitu interfejsu API.

Wyświetlanie tabeli wyników

Aby wyświetlić tabelę wyników, wywołaj LeaderboardsClient.getLeaderboardIntent(), aby uzyskać Intent do utworzyć domyślny interfejs użytkownika długiego banera. Gra może następnie wywołać interfejs, wywołując startActivityForResult

Ten fragment kodu pokazuje, jak aplikacja może zaktualizować wynik gracza. W fragment kodu, RC_LEADERBOARD_UI jest dowolną liczbą całkowitą 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 chociaż nie zwrócono żadnych wyników, musimy użyć funkcji startActivityForResult tak aby interfejs API mógł uzyskać tożsamość pakietu wywołującego. Przykład domyślnego Interfejs tabeli wyników widać poniżej.