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