이 가이드에서는 Google Play 게임즈 서비스에서 제공하는 이벤트 API를 사용하여 게임 분석을 위해 플레이어 게임플레이 데이터를 수집하는 방법을 보여줍니다. API는 com.google.android.gms.games.event
및 com.google.android.gms.games
에서 확인할 수 있습니다.
시작하기 전에
아직 검토하지 않았다면 이벤트 게임 개념을 검토하는 것이 좋습니다.
이벤트 API를 사용하여 코딩을 시작하기 전에 다음을 실행합니다.
- Google Play Console에서 게임 이벤트를 정의합니다.
- 로그인 체크리스트 권장사항을 따릅니다.
이벤트 클라이언트 가져오기
이벤트 API 사용을 시작하려면 먼저 게임이 EventsClient
객체를 가져와야 합니다. 이렇게 하려면 Games.getEventsClient()
메서드를 호출하고 활동과 현재 플레이어의 GoogleSignInAccount
를 전달하면 됩니다. 플레이어 계정 정보를 검색하는 방법을 알아보려면 Android 게임에서 로그인을 참고하세요.
이벤트 제출
게임에 코드를 추가하여 게임에서 관심 있는 이벤트가 발생할 때마다 Google Play 게임즈 서비스에 알릴 수 있습니다.
이벤트 업데이트를 전송하려면 eventId
값과 0 이상의 정수 incrementAmount
를 사용하여 EventsClient.increment()
를 호출합니다.
eventId
는 Google Play Console에서 이벤트를 처음 정의할 때 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); } } }); }