> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RTA 서비스 프로그래밍

> XBOX Real-Time Activity(RTA) 서비스에 XSAPI 핸들러를 등록하고 등록 해제하여 플레이어 통계 변경을 수신하는 방법을 보여주는 flat C 코드 샘플입니다.

이 항목에서는 다음 flat C 코드 예제를 사용하여 Real-Time Activity(RTA) 서비스를 호출하는 방법을 보여줍니다.

* [RTA 서비스에서 통계 변경 이벤트를 가져오기 위한 핸들러 등록](#registering-a-handler-to-get-statistic-changes-events-from-the-Real-Time-Activity-service)
* [RTA 서비스에서 등록 해제하기](#unregistering-from-the-Real-Time-Activity-service)

<a id="registering-a-handler-to-get-statistic-changes-events-from-the-Real-Time-Activity-service" />

## RTA 서비스에서 통계 변경 이벤트를 가져오기 위한 핸들러 등록

[Partner Center](https://partner.microsoft.com/dashboard)에서 통계를 정의하고 RTA용으로 구성합니다. 자세한 내용은 다음을 참조하십시오.

* [Partner Center에서 타이틀 관리형 주요 통계 및 순위표 구성하기](/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal)

* [플레이어 통계 변경 알림 등록하기](/services/xbox-services/fundamentals/rta/concepts/live-register-for-stat-notifications)

<Note>이벤트 기반 통계 개발자인 경우 [Partner Center](https://partner.microsoft.com/dashboard)에서 이벤트 기반 통계의 포털 구성에 대한 정보를 위해 개발자 계정 관리자(DAM)에게 문의하십시오. 자세한 내용은 [Partner Center에서 XBOX Live 통계 및 통계 규칙 구성](https://developer.microsoft.com/en-us/games/xbox/partner/windows-configure-stats)을 참조하십시오.</Note>

타이틀 내에서 RTA가 추적할 통계를 구성해야 합니다. 다음 코드 예제와 같이 구성된 통계 중 하나가 변경될 때마다 타이틀 핸들러가 호출됩니다.

#### Flat C

```cpp theme={null}
// 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()
);
```

<a id="unregistering-from-the-Real-Time-Activity-service" />

## RTA 서비스에서 등록 해제하기

특정 통계(또는 통계 집합)에 대한 업데이트가 더 이상 필요하지 않을 때 타이틀은 단순히 해당 통계 추적을 중지해야 합니다.
통계 업데이트가 전혀 필요하지 않은 경우, 다음 코드 예제와 같이 등록된 모든 핸들러를 제거하면 관련 RTA 구독이 자동으로 제거됩니다.

#### Flat C

```cpp theme={null}
// 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
);
```

<Info>클라이언트가 멀티플레이어 세션에 RTA를 사용하고 30초 동안 연결이 끊어지면 Multiplayer Session Directory(MPSD)가 RTA 세션이 닫힌 것을 감지하고 세션에서 플레이어를 제거합니다. 그런 다음 XSAPI가 자동으로 RTA 연결을 재설정합니다. 그러나 RTA 구독이 재설정된 후 MPSD 세션을 다시 작성하는 것은 타이틀의 책임입니다.</Info>

## 참고 항목

[XblStatisticChangeEventArgs](/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs)

[XblUserStatisticsAddStatisticChangedHandler](/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsaddstatisticchangedhandler)

[XblUserStatisticsRemoveStatisticChangedHandler](/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsremovestatisticchangedhandler)


## Related topics

- [Real-Time Activity(RTA) 서비스 예제 코드](/ko/services/xbox-services/fundamentals/rta/how-to/live-rta-howto-nav.md)
- [방법](/ko/services/xbox-services/fundamentals/rta/how-to/index.md)
- [스탯 변경 알림 포털 구성](/ko/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-stat-change-notif-portal.md)
- [엔티티 프로그래밍 모델](/ko/services/playfab/live-service-management/game-configuration/entities/index.md)
- [비동기 프로그래밍 모델](/ko/build/core-features/common/async/async-programming-model.md)
