В связи с прекращением поддержки API Google Sign-In , мы удаляем SDK для игр версии 1 в 2026 году. После февраля 2025 года вы не сможете публиковать в Google Play игры, которые были интегрированы с SDK для игр версии 1. Мы рекомендуем использовать вместо него SDK для игр версии 2.
Хотя существующие игры с интеграцией предыдущих версий v1 будут продолжать работать еще пару лет, мы рекомендуем перейти на версию v2, начиная с июня 2025 года.
Данное руководство предназначено для использования SDK Play Games Services v1. Информацию о последней версии SDK см. в документации v2 .
В этом руководстве показано, как собирать данные об игровом процессе игроков для аналитики игры, используя API событий, предоставляемые сервисами Google Play Games. API можно найти в папках com.google.android.gms.games.event и com.google.android.gms.games .
Прежде чем начать
Если вы еще этого не сделали, вам может быть полезно повторить концепции игры, основанной на событиях .
Before you start to code using the events APIs:
- Настройте события для своей игры в консоли Google Play .
- Follow the sign-in checklist recommendations .
Get the events client
Для начала использования API событий ваша игра должна получить объект EventsClient . Это можно сделать, вызвав метод Games.getEventsClient() и передав в него активность и учетную GoogleSignInAccount текущего игрока. Чтобы узнать, как получить информацию об учетной записи игрока, см. раздел «Вход в систему в играх Android» .
Submit events
Вы можете добавить в свою игру код, который будет уведомлять Google Play Games Services о каждом событии, представляющем интерес для вашей игры.
Для отправки обновления события вызовите метод EventsClient.increment() , указав значение eventId и целочисленное incrementAmount , равное или большее 0.
- Идентификатор
eventIdгенерируется сервисами Google Play Games при первом определении события в консоли Google Play и используется для уникальной идентификации этого события в вашей игре. - С помощью параметра
incrementAmountможно указать количественный прогресс игрока в достижении определенной игровой цели. Например, если событие, которое отслеживает ваша игра, — «Победить 500 монстров с выпученными глазами» , значениеincrementAmountможет быть равно количеству монстров, убитых игроком в одном бою.
Вот пример того, как отправить событие с шагом в 1:
public void submitEvent(String eventId) {
Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.increment(eventId, 1);
}Retrieve events
Вы можете получить все данные о событиях, хранящиеся на серверах Google для вашей игры, вызвав метод EventsClient.load() . В вызове метода передайте логическое значение, указывающее, следует ли Google Play Games Services очищать локально кэшированные данные на устройстве пользователя.
Чтобы получить данные для конкретных событий, которые вы определили в консоли Google Play, вызовите метод 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); } } }); }