Eventos en juegos para Android

En esta guía, se muestra cómo recopilar datos de juego de los jugadores para las estadísticas mediante las API de eventos que proporcionan los Servicios de juego de Google Play. Puedes encontrar las APIs en com.google.android.gms.games.event y com.google.android.gms.games.

Antes de comenzar

Si aún no lo hiciste, puede resultarte útil consultar los conceptos de juegos de eventos.

Antes de comenzar a programar mediante las APIs de events, haz lo siguiente:

Obtén el cliente de eventos

Para comenzar a usar las API de eventos, el juego primero debe obtener un objeto EventsClient. Para ello, llama al método Games.getEventsClient() y pasa la actividad.

Cómo enviar eventos

Puedes agregar código a tu juego para notificar a los Servicios de juego de Google Play cuando se produce un evento de interés en tu juego.

Para enviar la actualización de un evento, llama a EventsClient.increment() con el valor eventId y un valor entero incrementAmount que sea igual o mayor que 0.

  • Los servicios de juego de Google Play generan el eventId cuando defines el evento por primera vez en Google Play Console y se usa para identificar este evento de forma única en tu juego.
  • Puedes usar la entrada incrementAmount a fin de especificar el progreso cuantitativo del jugador para completar un objetivo específico del juego. Por ejemplo, si el evento del que quieres hacer un seguimiento es "Defeat 500 buged-eysters", el valor incrementAmount puede ser la cantidad de monstruos que mató el jugador en una sola batalla.

Este es un ejemplo de cómo enviar un evento con un incremento de 1:

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

Recupera eventos

Si llamas a EventsClient.load(), puedes recuperar todos los datos de eventos almacenados en los servidores de Google para tu juego. En la llamada del método, pasa un valor booleano para indicar si los Servicios de juego de Google Play deben borrar los datos almacenados en caché de forma local en el dispositivo del usuario.

Para recuperar datos de eventos específicos que definiste en Google Play Console, llama a EventsClient.loadByIds() y pasa un array de ID de eventos en los parámetros de entrada.

En el siguiente fragmento, se muestra cómo puedes consultar los Servicios de juego de Google Play para obtener la lista de todos los eventos de tu juego:

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