Android 游戏中的玩家统计信息

利用 Player Stats API,您可以针对某些玩家细分群体和玩家生命周期的不同阶段量身设计游戏体验。您可以根据玩家的游戏进度、消费情况和互动度,为每个玩家细分群体量身打造体验。举例来说,您可以使用此 API 采取积极的措施来鼓励活跃度较低的玩家重新积极地玩游戏,例如您可以在玩家登录时显示并推销新的游戏内商品。

本指南将介绍如何通过 Google Play 游戏服务在游戏中使用 Player Stats API。这些 API 可以在 com.google.android.gms.games.statscom.google.android.gms.games 包中找到。

准备工作

开始使用 Player Stats API 之前,请做好以下准备:

获取玩家统计信息客户端

要开始使用 Player Stats API,您的游戏必须首先获取 PlayerStatsClient 对象。为此,您可以调用 Games.getPlayerStatsClient() 方法并传入当前玩家的活动和 GoogleSignInAccount。要了解如何检索玩家的帐号信息,请参阅在 Android 游戏中登录

玩家统计信息基础知识

您可以使用 Player Stats API 检索玩家在游戏内的活动数据。您可以检索的玩家数据类型包括:

  • 平均会话时长:玩家的平均会话时长,以分钟为单位。每次的会话时长从玩家登录 Google Play 游戏服务之时开始计算,到退出服务为止。

  • 距离上次玩游戏的天数:距离玩家上一次玩游戏的大概天数。

  • 购物次数:玩家在应用内购买商品的大概次数。

  • 会话次数:玩家的大概会话次数。会话次数根据玩家登录 Google Play 游戏服务的次数来计算。

  • 会话百分位:玩家的会话百分位近似值,以 0 到 1 之间(含二者)的小数值表示。此值反映与此游戏的玩家群中其他的玩家相比,当前玩家玩游戏的会话次数。数字越大,表示此玩家玩游戏的会话越多。

  • 消费百分位:玩家的消费百分位近似值,以 0 到 1 之间(含二者)的小数值表示。此值反映与此游戏的玩家群中其他的玩家相比,当前玩家已经消费的金额。数字越大,表示此玩家的消费越多。

以下玩家数据类型已弃用,系统针对这些类型会始终返回未设定值常量:

  • 流失概率:对玩家是否会在接下来的一天流失进行的预测,以 0(低流失概率)到 1(高流失概率)之间(含二者)的小数值表示。流失是指玩家连续 7 天无活动。
  • 消费概率:玩家在此游戏中选择消费的大概概率,以 0(低消费概率)到 1(高消费概率)之间(含二者)的小数值表示。
  • 未来 28 天的预估总消费额:预计未来 28 天玩家在此游戏中的大概总消费。
  • 高消费概率:未来 28 天玩家的消费金额处于此游戏玩家群消费水平的第 95 百分位或更高百分位的大概概率。此值以 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 Stats API,您可以根据玩家在游戏内的互动情况和消费行为,轻松识别不同类型的玩家,然后采取相应的策略提升玩家的游戏体验。

下表列出了一些玩家细分群体示例以及建议的互动度提升策略:

玩家细分群体 互动度提升策略
玩家以往通常会话次数较多、消费百分位较高,但最近已经有一周或更长时间没有玩游戏了。
  • 发通知告诉他们回来玩游戏可享受折扣或获得特别奖励。
  • 通过显示欢迎回来的消息,对玩家的出色成绩表示认可,并奖励一枚专为鼓励玩家回来玩游戏而设计的徽章。
玩家的互动度较高、消费百分位较低。
  • 量身设计奖励来激励他们邀请好友安装并使用您的游戏。此方法是利用玩家对游戏所表现出的兴趣来吸引新的玩家。
玩家显现出玩游戏的积极性已达顶峰,继而开始减少玩游戏的迹象。
  • 量身设计奖励来重新唤起他们的兴趣,例如提供价值高、有效期短的工具、武器或折扣。
  • 在玩家下次登录时,显示一个视频,引导玩家体验社区功能(例如部族攻击),从而促进玩家更频繁、更持久地玩游戏。
玩家的消费概率很高或很低。
  • 玩家不太可能会消费:提供观看广告视频的选项。显示可供购买的低价位商品。
  • 玩家很可能会消费:及早引导他们进入游戏内商店,并通过提供特别促销商品激励他们购买。