Conquistas em jogos 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:

Como conseguir um cliente de conquistas

Para começar a usar a API de conquistas, o jogo precisa ter uma Objeto AchievementsClient. Você pode fazer isso chamando o método Games.getAchievementClient() e transmitindo a atividade.

Desbloqueando conquistas

Para desbloquear uma conquista, chame o método AchievementsClient.unlock() e e passar 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 serão necessárias para desbloqueá-lo), chame AchievementsClient.increment().

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

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

Não é necessário escrever códigos adicionais para desbloquear a conquista. Serviços relacionados a jogos do Google Play desbloqueia automaticamente a conquista quando ela atinge o número de etapas necessárias.

É 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 também estas práticas recomendadas para evitar exceder sua cota de API.

Exibindo conquistas

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

O snippet de código a seguir mostra como seu app pode exibir a interface do usuário padrão de conquistas. 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.