Eventos em jogos Android

Este guia mostra como coletar dados de jogabilidade do jogador para análise usando as APIs de eventos fornecidos 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:

Como acessar o cliente de eventos

Para começar a usar as APIs de eventos, o jogo precisa ter uma Objeto EventsClient. Você pode fazer isso chamando o método método Games.getEventsClient() e transmitindo o atividade e a GoogleSignInAccount para o player atual. Para saber como recuperar as informações da conta do jogador, consulte Faça login em jogos Android.

Como enviar eventos

É possível adicionar um código ao jogo para notificar os serviços relacionados a jogos do Google Play sempre que um evento de interesse do seu jogo.

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

  • O eventId é gerado pelos serviços relacionados a jogos do Google Play quando você o define pela primeira vez. o evento no Google Play Console e é usado para identificá-lo exclusivamente 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);
}

Como recuperar eventos

Para recuperar todos os dados de eventos armazenados nos servidores do Google, chame EventsClient.load(). Na , transmita um valor booleano para indicar se os serviços relacionados a jogos do Google Play devem limpar a dados 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 pelo 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);
          }
        }
      });
}