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

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

Прежде чем вы начнете

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

Прежде чем вы начнете писать код с использованием API-интерфейсов списков лидеров:

Получение клиента списка лидеров

Чтобы начать использовать API списков лидеров, ваша игра должна сначала получить объект LeaderboardsClient . Вы можете сделать это, вызвав метод Games.getLeadeboardsClient() и передав активность и 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 мог получить идентификатор вызывающего пакета. Пример пользовательского интерфейса таблицы лидеров по умолчанию показан ниже.