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:
- Define los eventos para tu juego en Google Play Console.
- Sigue las recomendaciones de la lista de tareas para acceder.
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 valorincrementAmount
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); } } }); }