Android 游戏中的玩家数据统计

Google 登录 API 弃用后,我们将在 2026 年移除 games v1 SDK。2025 年 2 月之后,您将无法在 Google Play 上发布新集成 games v1 SDK 的游戏。我们建议您改用 games v2 SDK。
尽管现有集成 games v1 的游戏将在几年内继续运行,但仍建议您从 2025 年 6 月开始迁移到 v2
本指南介绍如何使用 Play Games Services v1 SDK。有关最新 SDK 版本的信息,请参阅 v2 文档

玩家数据统计 API 可让您根据特定的玩家细分群体和玩家生命周期的不同阶段定制游戏体验。您可以根据玩家的进度、花费和参与情况,为每个玩家细分群体构建定制的体验。例如,您可以使用此 API 采取主动行动来鼓励不活跃的玩家重新参与游戏,例如在该玩家登录时展示和宣传新的游戏内物品。

本指南向您展示如何在游戏中使用 Google Play 游戏服务的玩家数据统计 API。API 位于 com.google.android.gms.games.statscom.google.android.gms.games 软件包中。

开始之前

在开始使用玩家数据统计 API 之前

获取玩家数据统计客户端

要开始使用玩家数据统计 API,您的游戏必须首先获取一个 PlayerStatsClient 对象。您可以通过调用 Games.getPlayerStatsClient() 方法并将 Activity 和当前玩家的 GoogleSignInAccount 传入来实现。要了解如何检索玩家帐号信息,请参阅Android 游戏中的登录

玩家数据统计基础知识

您可以使用玩家数据统计 API 检索有关玩家游戏内活动的数据。您可以检索的玩家数据类型包括

  • 平均会话时长:玩家的平均会话时长(以分钟为单位)。会话时长取决于玩家登录 Google Play 游戏服务的时间。

  • 上次玩游戏以来的天数:自玩家上次玩游戏以来的大致天数。

  • 购买次数:玩家应用内购买的大致次数。

  • 会话次数:玩家的大致会话次数。会话次数取决于玩家登录 Google Play 游戏服务的次数。

  • 会话百分比排名:玩家的大致会话百分比排名,以介于 0 到 1(含 0 和 1)之间的十进制值给出。该值表示当前玩家与游戏其余玩家群体相比玩了多少会话。数字越大表示该玩家玩了更多会话。

  • 花费百分比排名:玩家的大致花费百分比排名,以介于 0 到 1(含 0 和 1)之间的十进制值给出。该值表示当前玩家与游戏其余玩家群体相比花费了多少。数字越大表示该玩家花费越多。

以下类型的玩家数据已弃用,并且始终返回未设置的值常量

  • 流失概率:预测玩家是否会在接下来一天流失,以介于 0(流失概率低)到 1(流失概率高)(含 0 和 1)之间的十进制值给出。流失定义为 7 天不活跃。
  • 花费概率:预测玩家选择在此游戏中花费的大致概率,以介于 0(花费概率低)到 1(花费概率高)(含 0 和 1)之间的十进制值给出。
  • 未来 28 天的总花费:玩家在接下来 28 天内在此游戏中的预计总花费大致值。
  • 高消费玩家概率:玩家在接下来 28 天内花费金额将达到或超过此游戏玩家群体 95% 百分位的大致概率。以介于 0(成为高消费玩家概率低)到 1(成为高消费玩家概率高)(含 0 和 1)之间的十进制值给出。

检索玩家数据统计数据

要检索当前已登录玩家的玩家数据统计数据,请按以下步骤操作

  1. 调用 PlayerStatsClient.loadPlayerStats() 方法。
  2. 如果调用成功,Google Play 游戏服务会返回一个 Task 对象,该对象会异步加载一个 PlayerStats 对象。使用此对象的方法检索有关已登录玩家在您的应用中活动的数据。

示例

public void checkPlayerStats() {
  Games.getPlayerStatsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .loadPlayerStats(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<PlayerStats>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<PlayerStats>> task) {
          if (task.isSuccessful()) {
            // Check for cached data.
            if (task.getResult().isStale()) {
              Log.d(TAG, "using cached data");
            }
            PlayerStats stats = task.getResult().get();
            if (stats != null) {
              Log.d(TAG, "Player stats loaded");
              if (stats.getDaysSinceLastPlayed() > 7) {
                Log.d(TAG, "It's been longer than a week");
              }
              if (stats.getNumberOfSessions() > 1000) {
                Log.d(TAG, "Veteran player");
              }
              if (stats.getChurnProbability() == 1) {
                Log.d(TAG, "Player is at high risk of churn");
              }
            }
          } else {
            int status = CommonStatusCodes.DEVELOPER_ERROR;
            if (task.getException() instanceof ApiException) {
              status = ((ApiException) task.getException()).getStatusCode();
            }
            Log.d(TAG, "Failed to fetch Stats Data status: "
                + status + ": " + task.getException());
          }
        }
      });
}

使用玩家数据统计数据的提示

Play 数据统计 API 可让您轻松识别各种类型的玩家(根据他们的参与度和花费行为),并采用适当的策略来增强他们的游戏体验。

下表列出了一些示例玩家细分群体和推荐的参与策略

玩家细分群体 参与策略
会话次数多、花费百分比排名较高,但最近一周或更长时间没有玩过游戏的常玩玩家。
  • 在玩家回归玩游戏时发送关于可用折扣或特殊奖励的通知。
  • 显示一条欢迎回来消息,表彰令人印象深刻的成就,并授予一枚旨在鼓励回归玩游戏的徽章。
花费百分比排名较低的高度活跃玩家。
  • 提供定制奖励以激励他们邀请好友安装并加入您的游戏。这种方法利用玩家对游戏表现出的喜爱来招募新玩家。
显示出高峰期已过且开始玩得越来越不频繁的高消费玩家。
  • 提供定制奖励以重新激发他们的兴趣,例如提供高价值、短时效的工具、武器或折扣。
  • 玩家下次登录时,展示一段视频,引导他们使用社区功能,例如公会攻击,这些功能可以促进更频繁、更长时间的参与。
花费概率非常高或非常低的玩家。
  • 不太可能花费:提供观看广告视频的选项。展示价格较低的可购买物品。
  • 很可能花费:尽早引导他们进入游戏内商店,并提供特别促销以激励他们购买。