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