В этом руководстве показано, как собирать данные об игровом процессе игроков для игровой аналитики с помощью API событий, предоставляемых игровыми сервисами Google Play. API можно найти в com.google.android.gms.games.event
и com.google.android.gms.games
.
Прежде чем вы начнете
Если вы еще этого не сделали, вам может быть полезно ознакомиться с концептами игры событий .
Прежде чем вы начнете кодировать с помощью API событий:
- Определите события для своей игры в консоли Google Play .
- Следуйте рекомендациям контрольного списка входа .
Получение клиента событий
Чтобы начать использовать API событий, ваша игра должна сначала получить объект EventsClient
. Вы можете сделать это, вызвав метод Games.getEventsClient()
и передав действие и GoogleSignInAccount
для текущего игрока. Чтобы узнать, как получить информацию об учетной записи игрока, см. раздел Вход в игры для Android .
Отправка событий
Вы можете добавить код в свою игру, чтобы уведомлять игровые службы Google Play всякий раз, когда происходит событие, представляющее интерес для вашей игры.
Чтобы отправить обновление события, вызовите EventsClient.increment()
со значением eventId
и целым incrementAmount
, равным или превышающим 0.
-
eventId
создается игровыми сервисами Google Play, когда вы впервые определяете событие в консоли Google Play, и используется для уникальной идентификации этого события в вашей игре. - Вы можете использовать ввод
incrementAmount
, чтобы указать количественный прогресс игрока в достижении какой-либо конкретной цели игры. Например, если ваша игра хочет отслеживать событие «Победите 500 пучеглазых монстров» , значениеincrementAmount
может быть количеством монстров, убитых игроком в одном сражении.
Вот пример того, как отправить событие с шагом 1:
public void submitEvent(String eventId) { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(eventId, 1); }
Получение событий
Вы можете получить все данные о событиях, хранящиеся на серверах Google для вашей игры, вызвав EventsClient.load()
. В вызове метода передайте логическое значение, чтобы указать, должны ли игровые службы Google Play очищать локально кэшированные данные на устройстве пользователя.
Чтобы получить данные для определенных событий, которые вы определили в консоли Google Play, вызовите EventsClient.loadByIds()
и передайте массив идентификаторов событий во входных параметрах.
В следующем фрагменте показано, как запросить в игровых сервисах 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); } } }); }