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 brindan 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. Puedes hacerlo llamando al Games.getEventsClient() y pasa el y GoogleSignInAccount del jugador actual. Para aprender a hacer lo siguiente: recuperar la información de la cuenta del jugador, consulta Acceso a juegos para Android.

Cómo enviar eventos

Puedes agregar código a tu juego para notificar a los Servicios de juego de Google Play cada vez que evento de interés para tu juego.

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

  • Los Servicios de juego de Google Play generan eventId cuando defines por primera vez evento en Google Play Console y se usa para identificarlo de forma exclusiva en el 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);
}

Cómo recuperar eventos

Si llamas a EventsClient.load(), puedes recuperar todos los datos de eventos almacenados en los servidores de Google para tu juego. En la pasa un valor booleano para indicar si los servicios de juego de Google Play deben borrar los datos almacenados en caché 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 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);
          }
        }
      });
}