В этом руководстве показано, как использовать API-интерфейсы достижений в приложении Android для разблокировки и отображения достижений в игре. API можно найти в пакетах com.google.android.gms.games
и com.google.android.gms.games.achievements
.
Прежде чем вы начнете
Если вы еще этого не сделали, вам может быть полезно ознакомиться с концепцией игры с достижениями .
Прежде чем вы начнете программировать с помощью API достижений:
- Следуйте инструкциям по установке и настройке приложения для использования игровых сервисов Google Play в руководстве по настройке SDK сервисов Google Play .
- Определите достижения, которые вы хотите разблокировать или отображать в игре, следуя инструкциям в руководстве по консоли Google Play .
- Загрузите и просмотрите примеры кода достижений на странице примеров Android .
- Ознакомьтесь с рекомендациями, описанными в контрольном списке качества .
Получение клиента достижений
Чтобы начать использовать API достижений, ваша игра должна сначала получить объект AchievementsClient
. Вы можете сделать это, вызвав метод Games.getAchievementClient()
и передав действие и GoogleSignInAccount
для текущего игрока. Чтобы узнать, как получить информацию об учетной записи игрока, см. раздел Вход в игры для Android .
Разблокировка достижений
Чтобы разблокировать достижение, вызовите метод AchievementsClient.unlock()
и передайте идентификатор достижения.
В следующем фрагменте кода показано, как ваше приложение может разблокировать достижения:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .unlock(getString(R.string.my_achievement_id));
Если достижение имеет инкрементный тип (то есть для его разблокировки требуется несколько шагов), вместо этого вызовите AchievementsClient.increment()
.
В следующем фрагменте кода показано, как ваше приложение может увеличить достижение игрока:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(getString(R.string.my_achievement_id), 1);
Вам не нужно писать дополнительный код, чтобы разблокировать достижение; Игровые сервисы Google Play автоматически разблокируют достижение, когда оно достигает необходимого количества шагов.
Хорошей практикой является определение идентификаторов достижений в файле strings.xml
, чтобы ваша игра могла ссылаться на достижения по идентификатору ресурса. Выполняя вызовы для обновления и загрузки достижений, обязательно следуйте этим рекомендациям , чтобы не превысить квоту API.
Отображение достижений
Чтобы показать достижения игрока, вызовите AchievementsClient.getAchievementsIntent()
, чтобы получить Intent
для создания пользовательского интерфейса достижений по умолчанию. Затем ваша игра может вызвать пользовательский интерфейс, вызвав startActivityForResult
.
В следующем фрагменте кода показано, как ваше приложение может отображать пользовательский интерфейс достижения по умолчанию. Во фрагменте RC_ACHIEVEMENT_UI
— это произвольное целое число, которое игра использует в качестве кода запроса.
private static final int RC_ACHIEVEMENT_UI = 9003; private void showAchievements() { Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .getAchievementsIntent() .addOnSuccessListener(new OnSuccessListener<Intent>() { @Override public void onSuccess(Intent intent) { startActivityForResult(intent, RC_ACHIEVEMENT_UI); } }); }
Пример пользовательского интерфейса достижений по умолчанию показан ниже.