Événements dans les jeux Android

Ce guide explique comment collecter les données de jeu à des fins d'analyse à l'aide des API Events fournies par les services de jeux Google Play. Ces API sont disponibles dans com.google.android.gms.games.event et com.google.android.gms.games.

Avant de commencer

Si ce n'est pas déjà fait, n'hésitez pas à revoir les concepts d'événement dans les jeux.

Avant de commencer à coder à l'aide des API Events :

Obtenir le client d'événements

Pour commencer à utiliser les API Events, votre jeu doit d'abord obtenir un objet EventsClient. Pour ce faire, appelez la méthode Games.getEventsClient() et transmettez l'activité et le GoogleSignInAccount pour le lecteur actuel. Pour savoir comment récupérer les informations du compte du joueur, consultez Se connecter dans les jeux Android.

Envoyer des événements

Vous pouvez ajouter du code dans votre jeu pour avertir les services de jeux Google Play chaque fois qu'un événement intéressant se produit.

Pour envoyer une notification d'événement, appelez EventsClient.increment() avec la valeur eventId et un entier incrementAmount supérieur ou égal à 0.

  • L'identifiant eventId est généré par les services de jeux Google Play lorsque vous définissez l'événement dans la Google Play Console. Celui-ci permet d'identifier cet événement de manière unique dans votre jeu.
  • Vous pouvez utiliser l'entrée incrementAmount pour spécifier la progression quantitative du joueur par rapport à un objectif spécifique au jeu. Par exemple, si l'événement à suivre par votre jeu est "Vaincre 500 monstres aux yeux d'insectes", la valeur incrementAmount peut correspondre au nombre de monstres que le joueur a éliminés en un seul combat.

Voici un exemple d'envoi d'un événement avec un incrément de 1 :

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

Récupérer des événements

Vous pouvez récupérer toutes les données d'événement stockées sur les serveurs de Google pour votre jeu en appelant EventsClient.load(). Dans l'appel de méthode, transmettez une valeur booléenne pour indiquer si les services Google Play Jeux doivent effacer les données mises en cache localement sur l'appareil de l'utilisateur.

Pour récupérer des données portant sur des événements spécifiques que vous avez définis dans la Google Play Console, appelez EventsClient.loadByIds() et transmettez un tableau d'ID d'événements dans les paramètres d'entrée.

L'extrait de code suivant montre comment interroger les services de jeux Google Play pour obtenir la liste de tous les événements de votre jeu:

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