Таблицы лидеров в играх для Android

В связи с прекращением поддержки API входа Google мы удалим SDK для игр v1 в 2026 году. После февраля 2025 года вы не сможете публиковать в Google Play игры, недавно интегрированные с SDK для игр v1. Вместо этого мы рекомендуем использовать SDK для игр v2.
Хотя существующие игры с интеграцией предыдущих игр v1 продолжат функционировать еще пару лет, вам рекомендуется перейти на v2, начиная с июня 2025 года.
Это руководство посвящено использованию SDK Play Games Services v1. Информацию о последней версии SDK см. в документации v2 .

В этом руководстве показано, как использовать API таблиц лидеров в приложении Android для создания визуальных таблиц лидеров, записи результатов игроков и сравнения их с результатами игроков из предыдущих игровых сессий. API находятся в пакетах com.google.android.gms.games и com.google.android.gms.games.leaderboards .

Прежде чем начать

Если вы еще этого не сделали, возможно, вам будет полезно ознакомиться с концепциями игровых таблиц лидеров .

Прежде чем начать писать код с использованием API таблиц лидеров:

Получить клиент таблицы лидеров

Чтобы начать использовать API таблиц лидеров, ваша игра должна сначала получить объект LeaderboardsClient . Это можно сделать, вызвав метод Games.getLeadeboardsClient() и передав ему Activity и GoogleSignInAccount текущего игрока. Чтобы узнать, как получить информацию об учётной записи игрока, см . раздел Вход в игры для Android .

Обновить счет игрока

Когда счет игрока изменяется (например, когда игрок заканчивает игру), ваша игра может обновить его счет в таблице лидеров, вызвав LeaderboardsClient.submitScore() и передав идентификатор таблицы лидеров и исходное значение счета.

Следующий фрагмент кода показывает, как ваше приложение может обновить счет игрока:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

Рекомендуется указать идентификатор таблицы лидеров в файле strings.xml , чтобы ваша игра могла ссылаться на неё по идентификатору ресурса. При выполнении вызовов для обновления и загрузки результатов игроков также следуйте этим рекомендациям , чтобы не превысить квоту API.

Отобразить таблицу лидеров

Чтобы отобразить таблицу лидеров, вызовите LeaderboardsClient.getLeaderboardIntent() , чтобы получить Intent для создания пользовательского интерфейса таблицы лидеров по умолчанию. После этого игра сможет открыть этот интерфейс, вызвав startActivityForResult .

Следующий фрагмент кода показывает, как ваше приложение может обновить счёт игрока. В нём RC_LEADERBOARD_UI — это произвольное целое число для кода запроса.

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);
        }
      });
}

Обратите внимание: даже если результат не возвращается, нам необходимо использовать startActivityForResult , чтобы API мог получить идентификатор вызывающего пакета. Пример интерфейса таблицы лидеров по умолчанию показан ниже.