이 가이드에서는 Google Play 게임즈 서비스의 Player Stats API를 사용하는 방법을 보여줍니다. Player Stats API를 사용하면 플레이어의 인게임 활동 데이터를 검색할 수 있습니다.
Player Stats API를 사용하면 특정 플레이어 세그먼트와 다양한 단계의 플레이어 수명 주기에 맞춰 게임 환경을 설정할 수 있습니다. 플레이어의 게임 진행, 소비 및 참여 방식에 따라 각 플레이어 세그먼트에 맞춰 게임 환경을 구축할 수 있습니다. 예를 들어, 이 API를 사용하여 소극적으로 참여하는 플레이어가 게임에 더욱 몰입할 수 있도록 선제적 조치를 취할 수 있습니다(예: 플레이어가 로그인할 때 새로운 인게임 아이템 표시 및 홍보).
API는 com.google.android.gms.games.stats
및 com.google.android.gms.games
패키지에서 찾을 수 있습니다.
검색 가능한 플레이어 데이터 유형에는 다음이 포함됩니다.
평균 세션 길이: 플레이어의 평균 세션 길이(분 단위)입니다. 세션 길이는 플레이어가 Google Play 게임즈 서비스에 로그인한 시간으로 결정됩니다.
마지막 플레이 이후 경과 일: 플레이어가 마지막으로 플레이한 후 경과한 대략적인 일수입니다.
구매 횟수: 플레이어의 대략적인 인앱 구매 횟수입니다.
세션 수: 플레이어의 대략적인 세션 수입니다. 세션은 플레이어가 Google Play 게임즈 서비스에 로그인한 횟수로 결정됩니다.
세션 백분위: 플레이어의 대략적인 세션 백분위이며 0과 1 사이의 소수점 값으로 표시됩니다(0과 1 포함). 이 값은 게임의 다른 플레이어에 비해 현재 플레이어가 얼마나 세션을 진행했는지를 나타냅니다. 숫자가 높을수록 플레이어가 더 많은 세션을 진행했다는 의미입니다.
소비 백분위: 플레이어의 대략적인 소비 백분위이며 0과 1 사이의 소수점 값으로 표시됩니다(0과 1 포함). 이 값은 게임의 다른 플레이어에 비해 현재 플레이어가 얼마나 소비했는지를 나타냅니다. 숫자가 높을수록 플레이어가 더 많이 소비했다는 의미입니다.
다음 유형의 플레이어 데이터는 지원 중단되었으며 항상 설정되지 않은 상숫값을 반환합니다.
- 이탈 확률: 플레이어가 다음 날 이탈할 확률의 예상값이며 0(낮은 이탈 확률)과 1(높은 이탈 확률) 사이의 소수점 값으로 표시됩니다(0과 1 포함). 7일 동안의 비활성 상태가 유지되면 이탈로 정의됩니다.
- 소비 확률: 게임에서 플레이어가 소비를 선택할 대략적인 확률이며 0(낮은 소비 확률)과 1(높은 소비 확률) 사이의 소수점 값으로 표시됩니다(0과 1 포함).
- 향후 28일 동안의 총 소비: 게임에서 플레이어가 향후 28일간 소비할 것으로 예상되는 대략적인 총액입니다.
- 고액 소비자 확률: 플레이어가 향후 28일간 게임의 전체 플레이어 중에서 백분위 95 이상인 금액을 소비할 대략적인 확률입니다. 이 값은 0(고액 소비자가 될 확률 낮음)과 1(고액 소비자가 될 확률 높음) 사이의 소수점 값으로 표시됩니다.
시작하기 전에
Player Stats API를 사용하기 전에:
클라이언트 가져오기
Player Stats API를 사용하려면 먼저 게임에 PlayerStatsClient
객체를 확보해야 합니다. 이렇게 하려면 Games.getPlayerStatsClient()
메서드를 호출하고 활동을 전달하면 됩니다.
PlayerStatsClient
클래스는 Google Play 서비스 Task
클래스를 사용하여 결과를 비동기식으로 반환합니다. 태스크를 사용하여 스레드된 작업을 관리하는 방법에 관한 자세한 내용은 Tasks API 개발자 가이드를 참고하세요.
데이터 검색하기
현재 로그인한 플레이어의 플레이어 통계 데이터를 검색하려면 다음 단계를 따르세요.
PlayerStatsClient.loadPlayerStats()
메서드를 호출합니다.호출에 성공하면 Google Play 게임즈 서비스는
PlayerStats
객체를 비동기식으로 로드하는Task
객체를 반환합니다. 이 객체의 메서드를 사용하여 로그인한 플레이어의 앱 활동 데이터를 검색합니다.
다음 예를 참고하세요.
public void checkPlayerStats() { PlayGames.getPlayerStatsClient(this) .loadPlayerStats(true) .addOnCompleteListener(new OnCompleteListener<AnnotatedData<PlayerStats>>() { @Override public void onComplete(@NonNull Task<AnnotatedData<PlayerStats>> task) { if (task.isSuccessful()) { // Check for cached data. if (task.getResult().isStale()) { Log.d(TAG, "using cached data"); } PlayerStats stats = task.getResult().get(); if (stats != null) { Log.d(TAG, "Player stats loaded"); if (stats.getDaysSinceLastPlayed() > 7) { Log.d(TAG, "It's been longer than a week"); } if (stats.getNumberOfSessions() > 1000) { Log.d(TAG, "Veteran player"); } if (stats.getChurnProbability() == 1) { Log.d(TAG, "Player is at high risk of churn"); } } } else { int status = CommonStatusCodes.DEVELOPER_ERROR; if (task.getException() instanceof ApiException) { status = ((ApiException) task.getException()).getStatusCode(); } Log.d(TAG, "Failed to fetch Stats Data status: " + status + ": " + task.getException()); } } }); }
팁
Play Stats API를 사용하면 플레이어의 참여 및 소비 방식에 따라 다양한 유형의 플레이어를 쉽게 식별할 수 있으며 적절한 전략을 적용하여 플레이어의 게임 환경을 개선할 수 있습니다.
다음 표에는 플레이어 세그먼트의 몇 가지 예와 권장되는 참여 전략이 나와 있습니다.
플레이어 세그먼트 | 참여 전략 |
---|---|
세션 수가 많고 소비 백분위와 참여도가 높지만 한 주 이상 게임을 진행하지 않고 있는 플레이어 |
|
소비 백분위는 낮지만 참여도가 높은 플레이어 |
|
고액 소비자이지만 게임 진행 횟수가 점차 줄어드는 플레이어 |
|
소비 확률이 매우 높거나 매우 낮은 플레이어 |
|