Wydarzenia w grach na Androida

Ten przewodnik pokazuje, jak zbierać dane związane z grami na potrzeby analizy gier za pomocą interfejsów API zdarzeń udostępnianych przez usługi gier Google Play. Interfejsy API można znaleźć w com.google.android.gms.games.event i com.google.android.gms.games.

Zanim zaczniesz

Warto zapoznać się z koncepcjami dotyczącymi wydarzeń.

Zanim zaczniesz kodować zdarzenia za pomocą interfejsów API zdarzeń:

Pobieranie klienta zdarzeń

Aby zacząć korzystać z interfejsów API zdarzeń, gra musi najpierw uzyskać obiekt EventsClient. Aby to zrobić, wywołaj metodę Games.getEventsClient() i przekaż działanie.

Przesyłanie wydarzeń

Możesz dodać kod w grze, aby za każdym razem, gdy wydarzy się coś ciekawego, powiadamiać Usługi gier Google Play.

Aby wysłać aktualizację wydarzenia, wywołaj metodę EventsClient.increment() z wartością eventId i liczbą całkowitą incrementAmount równą 0 lub większą.

  • eventId jest generowany przez usługi gier Google Play, gdy zdefiniujesz zdarzenie w Konsoli Google Play i jednoznacznie identyfikuje je w grze.
  • Możesz użyć wartości incrementAmount, aby określić miary postępów gracza w realizacji celów związanych z grą. Jeśli np. zdarzenie, które chce śledzić gra, to „Pokonaj 500 potworów z błędami dla opon”, wartością incrementAmount może być liczba potworów zabitych w trakcie pojedynczej bitwy.

Oto przykład przesyłania zdarzenia z przyrostem wartości 1:

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

Pobieram wydarzenia

Aby pobrać wszystkie dane zdarzeń przechowywane na serwerach Google w Twojej grze, wywołaj funkcję EventsClient.load(). W wywołaniu metody przekaż wartość logiczną wskazującą, czy usługi gier Google Play powinny czyścić lokalnie dane z pamięci podręcznej na urządzeniu użytkownika.

Aby pobrać dane dotyczące konkretnych zdarzeń zdefiniowanych w Konsoli Google Play, wywołaj EventsClient.loadByIds() i przekaż tablicę identyfikatorów zdarzeń w parametrach wejściowych.

Ten fragment kodu pokazuje, jak wysyłać zapytania do usług gier Google Play w celu wyświetlenia wszystkich zdarzeń z gry:

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