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

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

Прежде чем начать

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

Прежде чем вы начнете писать код с использованием API достижений:

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

Чтобы начать использовать 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);
        }
      });
}

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