Eventos em jogos para Android

Este guia mostra como coletar dados de jogabilidade usando as APIs de eventos fornecidas pelos serviços relacionados a jogos do Google Play. As APIs podem ser encontradas em com.google.android.gms.games.event e com.google.android.gms.games.

Antes de começar

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

Antes de começar a programar usando as APIs de eventos:

Acessar o cliente de eventos

Para começar a usar as APIs de eventos, o jogo precisa ter um objeto EventsClient. Para fazer isso, chame o método Games.getEventsClient() e transmita a atividade e o GoogleSignInAccount para o player atual. Para saber como extrair as informações da conta do jogador, consulte Fazer login em jogos Android.

Enviar eventos

Você pode adicionar um código ao jogo para notificar os serviços relacionados a jogos do Google Play sempre que ocorrer um evento de interesse.

Para enviar uma atualização de evento, chame EventsClient.increment() com o valor eventId e um incrementAmount de número inteiro igual ou maior que 0.

  • O eventId é gerado pelos serviços relacionados a jogos do Google Play quando você define o evento no Google Play Console pela primeira vez e é usado para identificar esse evento de maneira exclusiva no seu jogo.
  • Você pode usar a entrada incrementAmount para especificar o progresso quantitativo do jogador em relação à conclusão de um objetivo específico do jogo. Por exemplo, se o evento que seu jogo quer rastrear é "Derrotar 500 monstros de olhos esbugalhados", o valor de incrementAmount pode ser o número de monstros que o jogador matou em uma única batalha.

Veja um exemplo de como enviar um evento com um incremento de 1:

public void submitEvent(String eventId) {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .increment(eventId, 1);
}

Recuperar eventos

Para recuperar todos os dados de eventos armazenados nos servidores do Google, chame EventsClient.load(). Na chamada de método, transmita um valor booleano para indicar se os serviços relacionados a jogos do Google Play precisam limpar os dados armazenados localmente em cache no dispositivo do usuário.

Para recuperar dados de eventos específicos definidos no Google Play Console, chame EventsClient.loadByIds() e transmita uma matriz de IDs de eventos nos parâmetros de entrada.

O snippet a seguir mostra como consultar os serviços relacionados a jogos do Google Play para conferir a lista de todos os eventos do seu jogo:

public void loadEvents() {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .load(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) {
          if (task.isSuccessful()) {
            // Process all the events.
            for (Event event : task.getResult().get()) {
              Log.d(TAG, "loaded event " + event.getName());
            }
          } else {
            // Handle Error
            Exception exception = task.getException();
            int statusCode = CommonStatusCodes.DEVELOPER_ERROR;
            if (exception instanceof ApiException) {
              ApiException apiException = (ApiException) exception;
              statusCode = apiException.getStatusCode();
            }
            showError(statusCode);
          }
        }
      });
}