本指南介绍了如何使用 Google Play 游戏服务的玩家数据 API。您可以使用玩家数据 API 检索玩家在游戏中的活动数据。
玩家数据 API 允许您根据玩家生命周期中的特定玩家群体和不同阶段来定制游戏体验。您可以根据玩家的进度、支出和参与度,为每个玩家群体构建定制体验。例如,您可以使用此 API 采取积极行动来鼓励不太活跃的玩家重新参与游戏,例如在玩家登录时显示和推广新的游戏内物品。
这些 API 位于 com.google.android.gms.games.stats
和 com.google.android.gms.games
软件包中。
准备工作
在开始使用玩家数据 API 之前
获取玩家数据客户端
要开始使用玩家数据 API,您的游戏必须首先获取一个 PlayerStatsClient
对象。您可以通过调用 PlayerStatsClient.getPlayersClient()
方法并传入 activity 来实现此目的。
PlayerStatsClient
类使用 Google Play 服务 Task
类异步返回结果。要了解有关使用任务管理线程工作的更多信息,请参阅任务 API 开发者指南。
玩家数据基础知识
您可以使用玩家数据 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)之间的十进制值。
检索玩家数据
要检索已登录玩家的玩家数据,请按以下步骤操作
如果调用成功,Google Play 游戏服务会返回一个
Task
对象,该对象会异步加载一个PlayerStats
对象。使用此对象的方法可检索有关已登录玩家在您的应用中的活动数据。
以下是一个示例
public void checkPlayerStats() { PlayGames.getPlayerStatsClient(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 可让您根据玩家的参与度和支出行为来识别各种类型的玩家,并应用适当的策略来增强他们的游戏体验。
下表列出了一些示例玩家群体和建议的参与策略
玩家群体 | 参与策略 |
---|---|
会话次数多、支出百分位高,但已一周或更长时间未游玩的活跃玩家。 |
|
参与度高但支出百分位低的玩家。 |
|
高消费玩家,但显示出已达巅峰并开始减少游玩频率的迹象。 |
|
支出概率极高或极低的玩家。 |
|