Conquistas em jogos para Android

Este guia descreve como usar as APIs de conquistas em um aplicativo Android para desbloquear e mostrar conquistas no seu jogo. As APIs podem ser encontradas nos pacotes com.google.android.gms.games e com.google.android.gms.games.achievements.

Antes de começar

Caso ainda não tenha feito isso, recomendamos consultar os conceitos de conquistas no jogo.

Antes de começar a programar usando a API de conquistas:

Acessar um cliente de conquistas

Para começar a usar a API de conquistas, o jogo precisa ter um objeto AchievementsClient. Para isso, chame o método Games.getAchievementClient() e transmita a atividade.

Desbloquear conquistas

Para desbloquear uma conquista, chame o método AchievementsClient.unlock() e transmita o ID da conquista.

O snippet de código abaixo mostra como o app pode desbloquear conquistas:

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

Se a conquista for do tipo incremental (ou seja, várias etapas são necessárias para o desbloqueio), chame AchievementsClient.increment().

O snippet de código abaixo mostra como o app pode incrementar a conquista do jogador:

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

Você não precisa programar mais códigos para desbloquear a conquista. Os serviços relacionados a jogos do Google Play desbloqueiam a conquista automaticamente quando o jogo atinge o número necessário de etapas.

É recomendado definir os IDs de conquista no arquivo strings.xml para que o jogo possa referenciar as conquistas por ID de recurso. Ao fazer chamadas para atualizar e carregar conquistas, siga as práticas recomendadas para evitar exceder sua cota de APIs.

Mostrar conquistas

Para mostrar as conquistas de um jogador, chame AchievementsClient.getAchievementsIntent() para receber um Intent e criar a interface padrão de conquistas do usuário. Em seguida, o jogo pode mostrar a IU chamando startActivityForResult.

O snippet de código abaixo mostra como o app pode exibir a interface padrão de conquistas do usuário. No snippet, RC_ACHIEVEMENT_UI é um número inteiro arbitrário que o jogo usa como código de solicitação.

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);
        }
      });
}

Confira abaixo um exemplo da IU de conquistas padrão.