Android 게임 이벤트

이 가이드에서는 Google Play 게임즈 서비스에서 제공하는 이벤트 API를 사용하여 게임 분석을 위해 플레이어 게임플레이 데이터를 수집하는 방법을 보여줍니다. API는 com.google.android.gms.games.eventcom.google.android.gms.games에서 확인할 수 있습니다.

시작하기 전에

아직 검토하지 않았다면 이벤트 게임 개념을 검토하는 것이 좋습니다.

이벤트 API를 사용하여 코딩을 시작하기 전에 다음을 실행합니다.

이벤트 클라이언트 가져오기

이벤트 API를 사용하려면 먼저 게임에서 EventsClient 객체를 가져와야 합니다. 이렇게 하려면 Games.getEventsClient() 메서드를 호출하고 현재 플레이어의 활동과 GoogleSignInAccount을 전달하면 됩니다. 플레이어 계정 정보를 검색하는 방법을 알아보려면 Android 게임에서 로그인을 참고하세요.

이벤트 제출

게임에 코드를 추가하여 게임에 관심 있는 이벤트가 발생할 때마다 Google Play 게임즈 서비스에 알릴 수 있습니다.

이벤트 업데이트를 보내려면 eventId 값과 0 이상의 정수 incrementAmount를 사용하여 EventsClient.increment()를 호출합니다.

  • eventId는 Google Play Console에서 이벤트를 처음 정의할 때 Google Play 게임즈 서비스에서 생성되며 게임에서 이 이벤트를 고유하게 식별하는 데 사용됩니다.
  • incrementAmount 입력을 사용하여 게임별 목표 달성을 위한 플레이어의 양적 진행 상황을 지정할 수 있습니다. 예를 들어 게임에서 추적하려는 이벤트가 '눈이 튀어나온 몬스터 500마리 무찌르기'인 경우 incrementAmount 값은 플레이어가 단일 배틀에서 죽인 몬스터 수가 될 수 있습니다.

다음은 1씩 증가하는 이벤트를 제출하는 방법을 보여주는 예입니다.

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

이벤트 검색

EventsClient.load()를 호출하여 게임을 위해 Google 서버에 저장된 모든 이벤트 데이터를 가져올 수 있습니다. 메서드 호출에서 Google Play 게임즈 서비스가 사용자 기기에서 로컬로 캐시된 데이터를 삭제해야 하는지 나타내는 불리언 값을 전달합니다.

Google Play Console에서 정의한 특정 이벤트의 데이터를 가져오려면 EventsClient.loadByIds()를 호출하고 입력 매개변수에 이벤트 ID 배열을 전달합니다.

다음 스니펫은 Google Play 게임즈 서비스에 게임의 모든 이벤트 목록을 쿼리하는 방법을 보여줍니다.

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