В связи с прекращением поддержки API входа Google мы удалим SDK для игр v1 в 2026 году. После февраля 2025 года вы не сможете публиковать в Google Play игры, недавно интегрированные с SDK для игр v1. Вместо этого мы рекомендуем использовать SDK для игр v2.
Хотя существующие игры с интеграцией предыдущих игр v1 продолжат функционировать еще пару лет, вам рекомендуется перейти на v2, начиная с июня 2025 года.
Это руководство посвящено использованию SDK Play Games Services v1. Информацию о последней версии SDK см. в документации v2 .
В этом руководстве показано, как собирать данные об игровом процессе для аналитики с помощью API событий, предоставляемых игровыми сервисами Google Play. API можно найти в разделах com.google.android.gms.games.event и com.google.android.gms.games .
Прежде чем начать
Если вы еще этого не сделали, возможно, вам будет полезно ознакомиться с концепциями игровых событий .
Прежде чем начать писать код с использованием API событий:
- Определите события для вашей игры в Google Play Console .
- Следуйте рекомендациям контрольного списка для входа в систему .
Получить клиент событий
Чтобы начать использовать API событий, ваша игра должна сначала получить объект EventsClient . Это можно сделать, вызвав метод Games.getEventsClient() и передав ему активность и GoogleSignInAccount текущего игрока. Чтобы узнать, как получить информацию об учётной записи игрока, см . раздел Вход в играх Android .
Отправить события
Вы можете добавить код в свою игру, чтобы уведомлять сервисы Google Play Games о каждом возникновении интересующего вас события.
Чтобы отправить обновление события, вызовите EventsClient.increment() со значением eventId и целым числом incrementAmount , равным или большим 0.
-
eventIdгенерируется сервисами Google Play Games Services при первом определении события в консоли 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 Games очищать локально кэшированные данные на устройстве пользователя.
Чтобы получить данные для определенных событий, которые вы определили в Google Play Console, вызовите EventsClient.loadByIds() и передайте массив идентификаторов событий во входных параметрах.
В следующем фрагменте показано, как можно запросить у Google Play Games Services список всех событий для вашей игры:
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); } } }); }