В этом руководстве показано, как использовать API-интерфейсы таблиц лидеров в приложении Android для создания визуальных таблиц лидеров, записи очков игрока и сравнения очков с результатами игрока в предыдущих игровых сессиях. API можно найти в пакетах com.google.android.gms.games
и com.google.android.gms.games.leaderboards
.
Прежде чем начать
Если вы еще этого не сделали, возможно, вам будет полезно просмотреть концепции игр со списками лидеров .
Прежде чем вы начнете писать код с использованием API-интерфейсов списков лидеров:
- Следуйте инструкциям по установке и настройке приложения для использования игровых сервисов Google Play в руководстве по настройке SDK сервисов Google Play .
- Определите таблицы лидеров, которые вы хотите, чтобы ваша игра отображала или обновляла, следуя инструкциям в руководстве по консоли Google Play .
- Загрузите и просмотрите примеры кода для таблиц лидеров на странице образцов Android .
- Ознакомьтесь с рекомендациями, описанными в Контрольном списке качества .
Получение клиента списка лидеров
Чтобы начать использовать 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 мог получить идентификатор вызывающего пакета. Пример пользовательского интерфейса таблицы лидеров по умолчанию показан ниже.