Wydarzenia w grach na Androida

W tym przewodniku dowiesz się, jak zbierać dane o rozgrywce użytkowników na potrzeby analizy gry za pomocą interfejsów API zdarzeń udostępnianych przez Usługi gier Play. Interfejsy API znajdziesz w pakietach com.google.android.gms.games.eventcom.google.android.gms.games.

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiłeś, warto zapoznać się z koncepcjami dotyczącymi zdarzeń i gry.

Zanim zaczniesz kodować przy użyciu 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ę PlayGames.getEventsClient() i podaj w niej aktywność.

Przesyłanie zdarzeń

Możesz dodać do gry kod, który będzie informować usługi gier Play o wystąpieniu zdarzenia istotnego dla Twojej gry.

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

  • Wartość eventId jest generowana przez Usługi gier Play podczas pierwszego zdefiniowania zdarzenia w Konsoli Google Play i służy do jednoznacznego identyfikowania tego zdarzenia w grze.

  • Za pomocą parametru incrementAmount możesz określić ilościowo postęp gracza w realizacji celu związanego z grą. Jeśli na przykład zdarzeniem, które chcesz śledzić, jest „Pokonanie 500 potworów”, wartość incrementAmount może być liczbą potworów, które gracz zabił w pojedynczej bitwie.

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

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

Pobieranie zdarzeń

Możesz pobrać wszystkie dane zdarzeń zapisane na serwerach Google w przypadku swojej gry, wywołując funkcję EventsClient.load(). W wywołaniu metody podaj wartość logiczną, aby wskazać, czy usługi gier Play powinny wyczyścić dane z lokalnego pamięci podręcznej na urządzeniu użytkownika.

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

Ten fragment kodu pokazuje, jak zapytać usługi gier Play o listę wszystkich zdarzeń w Twojej grze:

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