Android 游戏活动

本指南介绍了如何使用 Google Play 游戏服务提供的事件 API 收集玩家游戏数据以进行游戏分析。API 位于 com.google.android.gms.games.eventcom.google.android.gms.games 软件包中。

开始之前

如果您尚未这样做,不妨查看 事件游戏概念

在您开始使用事件 API 编写代码之前

获取事件客户端

要开始使用事件 API,您的游戏必须首先获取 EventsClient 对象。您可以通过调用 PlayGames.getEventsClient() 方法并传入 activity 来实现此目的。

提交事件

您可以在游戏中添加代码,以便在您的游戏发生感兴趣的事件时通知 Play 游戏服务。

要发送事件更新,请调用 EventsClient.increment(),其中 eventId 值和 incrementAmount 整数应大于或等于 0。

  • eventId 是您首次在 Google Play 管理中心定义事件时由 Play 游戏服务生成的,用于在您的游戏中唯一标识此事件。

  • 您可以使用 incrementAmount 输入来指定玩家完成某个游戏特定目标的量化进度。例如,如果您的游戏想要跟踪的事件是 “击败 500 只凸眼怪物”,则 incrementAmount 值可以是玩家在单次战斗中击杀的怪物数量。

以下是提交递增量为 1 的事件的示例

public void submitEvent(String eventId) {
  PlayGames.getEventsClient(this)
      .increment(eventId, 1);
}

检索事件

您可以通过调用 EventsClient.load() 检索存储在 Google 服务器中关于您游戏的所有事件数据。在方法调用中,传入一个布尔值以指示 Play 游戏服务是否应清除用户设备上的本地缓存数据。

要检索您在 Google Play 管理中心定义的特定事件的数据,请调用 EventsClient.loadByIds() 并在输入参数中传入事件 ID 数组。

以下代码段展示了如何查询 Play 游戏服务以获取您游戏的所有事件列表

public void loadEvents() {
  PlayGames.getEventsClient(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);
          }
        }
      });
}