对 RTA 服务进行编程

本主题演示如何使用以下扁平 C 代码示例调用实时活动 (RTA) 服务。

注册处理程序,以从 RTA 服务中获取统计信息更改事件

可在 合作伙伴中心 中定义统计信息并为 RTA 配置统计信息。 有关详细信息,请参阅以下内容:

注意

如果你是基于事件的统计信息开发人员,请联系开发人员客户经理(DAM),以获取有关 合作伙伴中心中基于事件的统计信息的门户配置的信息。 有关详细信息,请参阅在合作伙伴中心配置 Xbox Live 统计信息和统计信息规则

在游戏中,需要配置需要 RTA 跟踪的统计信息。每当配置的统计信息发生变化时,就会调用游戏处理程序,如下面的代码示例所示。

扁平 C

// Add a statistic changed handler.
void* context{ nullptr };
XblFunctionContext statisticChangedFunctionContext = XblUserStatisticsAddStatisticChangedHandler(
    xboxLiveContext,
    [](XblStatisticChangeEventArgs eventArgs, void* context)
    {
        // Handle statistic change. 
        LogToScreen("Statistic changed callback: stat changed (%s = %s)",
            eventArgs.latestStatistic.statisticName,
            eventArgs.latestStatistic.value);
    },
    context
    );

// Configure the statistics that you want RTA to track. Titles only receive real-time updates for tracked statistics.
// Note that you can update the set of tracked statistics independently from the handlers.
std::vector<const char*> statisticNames{ "TotalPuzzlesSolved" };
HRESULT hr = XblUserStatisticsTrackStatistics(
    xblContextHandle,
    &xboxUserId,
    1,
    scid,
    statisticNames.data(),
    statisticNames.size()
);

正在从 RTA 服务注销

特定统计信息(或系列统计信息)不再需要更新时,游戏应停止跟踪这些统计信息。 如果不再需要统计信息一起更新,则删除所有已注册的处理程序会自动删除相关 RTA 订阅,如下面的代码示例所示。

扁平 C

// Stop receiving updates for a particular statistic.   
std::vector<const char*> statisticNames{ "TotalPuzzlesSolved" }; 
HRESULT hr = XblUserStatisticsStopTrackingStatistics(
    xblContextHandle,
    &xboxUserId,
    1,
    scid,
    statisticNames.data(),
    statisticNames.size()
);

// Alternatively, stop receiving updates for statistics changes altogether.
XblUserStatisticsRemoveStatisticChangedHandler(
    xblContextHandle,
    statisticChangedFunctionContext
);

重要

如果客户端对多人游戏会话使用 RTA,并且断开连接 30 秒,多人游戏会话目录 (MPSD) 将检测到 RTA 会话已关闭,并从会话中删除玩家。 然后 XSAPI 自动重新建立 RTA 连接。 然而,在重新建立 RTA 订阅后,游戏需要是重写其 MPSD 会话。

另请参阅

XblStatisticChangeEventArgs

XblUserStatisticsAddStatisticChangedHandler

XblUserStatisticsRemoveStatisticChangedHandler