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 APIs 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 eventos, haz lo siguiente:

Obtén el cliente de eventos

Para comenzar a usar las APIs de eventos, primero el juego debe obtener un objeto EventsClient. Para ello, llama al método Games.getEventsClient() y pasa la actividad y el GoogleSignInAccount del reproductor actual. Si quieres saber cómo recuperar la información de la cuenta del jugador, consulta Información sobre el acceso a juegos para Android.

Envía 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 número entero incrementAmount que sea igual o mayor que 0.

  • eventId es generado por los Servicios de juego de Google Play cuando defines el evento por primera vez en Google Play Console y se usa para identificar este evento de forma única en tu juego.
  • Con la entrada incrementAmount, puedes 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" (Derrotar a 500 monstruos de ojos saltones), 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) {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(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 IDs 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() {
  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);
          }
        }
      });
}