向游戏添加玩家统计信息

Google 登录 API 弃用后,我们将在 2026 年移除游戏 v1 SDK。2025 年 2 月后,您将无法在 Google Play 上发布新集成了游戏 v1 SDK 的游戏。我们建议您改用游戏 v2 SDK。
虽然现有集成了旧版游戏 v1 SDK 的游戏在未来几年内仍能正常运行,但我们鼓励您从 2025 年 6 月起迁移到 v2
本指南适用于使用 Play 游戏服务 v1 SDK。Play 游戏服务 v2 的 C++ SDK 暂未提供。

借助玩家统计信息 API,您可以根据特定的玩家群体和玩家生命周期的不同阶段量身定制游戏体验。您可以根据玩家的进展、消费和参与情况,为每个玩家群体打造量身定制的体验。例如,您可以使用此 API 采取主动措施,鼓励不活跃的玩家重新参与游戏,例如在玩家登录时显示和推广新的游戏内物品。

本指南将向您介绍如何在原生 C++ 或 Objective-C 应用中使用玩家统计信息 API。

玩家统计信息基础知识

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

  • 平均会话时长:玩家的平均会话时长(以分钟为单位)。会话时长由玩家登录 Google Play 游戏服务的时间决定。
  • 流失概率:预测玩家是否会在第二天流失,取值为 0(流失概率低)或 1(流失概率高)。流失定义为 7 天不活跃。
  • 上次游戏以来的天数:自玩家上次游戏以来的大致天数。
  • 购买次数:玩家的大致应用内购买次数。
  • 会话次数:玩家的大致会话次数。会话由玩家登录 Google Play 游戏服务的次数决定。
  • 会话百分位数:玩家的大致会话百分位数,取值为 0 到 1(含)之间的十进制值。此值表示当前玩家与此游戏的其余玩家群相比玩过的会话次数。数值越高表示此玩家玩过的会话次数越多。
  • 消费百分位数:玩家的大致消费百分位数,取值为 0 到 1(含)之间的十进制值。此值表示当前玩家与此游戏的其余玩家群相比消费的金额。数值越高表示此玩家消费的金额越多。

使用 C++ 获取当前已登录玩家的统计信息

// Create the callback for our asynchronous fetch call.  This callback will
// log either an error or the average session length for the currently
// signed-in player.
gpg::StatsManager::FetchForPlayerCallback callback = [](gpg::StatsManager::FetchForPlayerResponse const &response) {
  if (IsError(response.status)) {
    LogE("An error occurred fetching player stats.");
  } else {
  gpg::PlayerStats const & player_stats = response.data;
    if (player_stats.HasAverageSessionLength()) {
      LogI("Average session length: %f", player_stats.AverageSessionLength());
    } else {
      LogW("Currently signed-in player had no associated average session length stats.");
    }
  }
};
// Asynchronously fetch the Player Stats.  When the fetch is finished it
// will call our callback. game_services_ is the std::unique_ptr<GameServices>
// returned by gpg::GameServices::Builder.Create()
game_services_->Stats().FetchForPlayer(callback);

使用 Objective-C 获取当前已登录玩家的统计信息

// Asynchronously fetches the Player Stats and then logs either a
// description of them or an error
[GPGPlayerStats playerStatsWithCompletionHandler:^(GPGPlayerStats *playerStats, NSError *error) {
  if (error) {
    NSLog(@"Error fetching player stats: %@", error);
  } else {
    NSLog(@"Description of stats for the currently signed-in player: %@", playerStats);
  }
}];

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

Play 统计信息 API 可让您根据玩家的参与度和消费行为轻松识别各种类型的玩家,并应用适当的策略来提升他们的游戏体验。

下表列出了一些示例玩家群体和推荐的互动策略

玩家群体 互动策略
会话次数多、消费百分位数高,但已有一周或更长时间未玩游戏的活跃玩家。
  • 在他们回归游戏时发送通知,告知他们可享受的折扣或特殊奖励。
  • 显示一条欢迎回归消息,肯定他们令人印象深刻的成就,并授予一枚徽章,以鼓励他们再次游戏。
参与度高但消费百分位数低的玩家。
  • 量身定制奖励,激励他们邀请好友安装并加入您的游戏。此方法利用玩家对游戏的明显喜爱来招募新玩家。
消费高的玩家显示出已达到峰值并开始减少游戏频率的迹象。
  • 量身定制奖励,以重燃他们的兴趣,例如提供高价值、短时长的工具、武器或折扣。
  • 玩家下次登录时,播放一段视频,引导他们前往社区功能(例如部落攻击),从而提高他们的参与频率并延长参与时间。