Eventos de 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 nos pacotes 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, seu jogo precisa conseguir um objeto EventsClient. Para isso, chame o método PlayGames.getEventsClient() e transmita a atividade.

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 modo exclusivo no 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) {
  PlayGames.getEventsClient(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() {
  PlayGames.getEventsClient(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);
          }
        }
      });
}