다음을 통해 공유


RTA 서비스 프로그래밍

이 항목에서는 다음 플랫 C 코드 예제를 사용하여 RTA(실시간 활동) 서비스를 호출하는 방법을 보여줍니다.

RTA 서비스에서 통계 변경 이벤트를 가져오기 위한 처리기 등록

통계를 정의하고 파트너 센터에서 RTA에 맞게 구성합니다. 자세한 내용은 다음을 참조하십시오.

참고 항목

이벤트 기반 통계 개발자인 경우 파트너 센터에서 이벤트 기반 통계의 포털 구성에 대한 자세한 내용은 개발자 계정 관리자에게 문의하세요. 자세한 내용은 파트너 센터)에서 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
);

Important

클라이언트가 멀티플레이어 세션에 RTA를 사용하다가 30초 동안 연결이 끊긴 경우 MPSD(멀티플레이어 세션 디렉터리)에서 RTA 세션이 종료된 것을 감지하고 플레이어를 해당 세션에서 제거합니다. 그러면 XSAPI가 RTA 연결을 자동으로 다시 설정합니다. 그러나 RTA 구독이 다시 설정된 후 MPSD 세션을 다시 쓰는 것은 타이틀의 책임입니다.

참고 항목

XblStatisticChangeEventArgs

XblUserStatisticsAddStatisticChangedHandler

XblUserStatisticsRemoveStatisticChangedHandler