本指南将向您展示如何使用 Google Play 游戏服务提供的事件 API 收集玩家游戏数据以进行游戏分析。这些 API 位于 com.google.android.gms.games.event
和 com.google.android.gms.games
包中。
开始之前
如果您尚未这样做,您可能会发现查看 事件游戏概念 很有帮助。
在您开始使用事件 API 编写代码之前
在 Google Play Console 中为您的游戏定义事件。
遵循 登录检查表建议。
获取事件客户端
要开始使用事件 API,您的游戏必须首先获取一个 EventsClient
对象。您可以通过调用 PlayGames.getEventsClient()
方法并传入活动来实现此目的。
提交事件
您可以在游戏中添加代码,以便在发生您游戏感兴趣的事件时通知 Play 游戏服务。
要发送事件更新,请使用 eventId
值和一个等于或大于 0 的整数 incrementAmount
调用 EventsClient.increment()
。
当您首次在 Google Play Console 中定义事件时,Play 游戏服务会生成
eventId
,并用于在您的游戏中唯一标识此事件。您可以使用
incrementAmount
输入指定玩家在完成某些特定游戏目标方面的定量进度。例如,如果您的游戏想要跟踪的事件是“击败 500 只独眼怪物”,则incrementAmount
值可以是玩家在一次战斗中杀死的怪物数量。
以下是如何提交增量值为 1 的事件的示例
public void submitEvent(String eventId) { PlayGames.getEventsClient(this) .increment(eventId, 1); }
检索事件
您可以通过调用 EventsClient.load()
检索存储在 Google 服务器中与您的游戏相关的所有事件数据。在方法调用中,传入一个布尔值以指示 Play 游戏服务是否应清除用户设备上的本地缓存数据。
要检索您在 Google Play Console 中定义的特定事件的数据,请调用 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); } } }); }