Достижения в играх для Android

В этом руководстве показано, как использовать API-интерфейсы достижений в приложении Android для разблокировки и отображения достижений в игре. API можно найти в пакетах com.google.android.gms.games и com.google.android.gms.games.achievements .

Прежде чем вы начнете

Если вы еще этого не сделали, вам может быть полезно ознакомиться с концепцией игры с достижениями .

Прежде чем вы начнете программировать с помощью API достижений:

Получение клиента достижений

Чтобы начать использовать API достижений, ваша игра должна сначала получить объект AchievementsClient . Вы можете сделать это, вызвав метод Games.getAchievementClient() и передав действие.

Разблокировка достижений

Чтобы разблокировать достижение, вызовите метод 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 автоматически разблокируют достижение, когда оно достигает необходимого количества шагов.

Хорошей практикой является определение идентификаторов достижений в файле 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);
        }
      });
}

Пример пользовательского интерфейса достижений по умолчанию показан ниже.