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