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

# RTA サービスのプログラミング

> XBOX Real-Time Activity (RTA) サービスで XSAPI ハンドラーを登録および登録解除してプレイヤーの統計変更を受信する方法を示すフラット C コード サンプルです。

このトピックでは、次のフラット 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)

## RTA サービスから統計変更イベントを取得するためのハンドラーの登録

統計情報を定義し、RTA 用に構成するには、[Partner Center](https://partner.microsoft.com/dashboard) を使用します。詳細については、以下を参照してください。

* [Partner Center でのタイトル管理 注目の統計 およびリーダーボードの構成](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)

* [プレイヤーの統計変更通知の登録](https://docs.xbox.com/ja-jp/services/xbox-services/fundamentals/rta/concepts/live-register-for-stat-notifications.md)

> [!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) を参照してください。

タイトル内では、RTA に追跡させたい統計情報を構成する必要があります。次のコード例に示すように、構成された統計情報のいずれかが変更されるたびに、タイトル ハンドラーが呼び出されます。

#### フラット 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()
);
```

## RTA サービスからの登録解除

特定の統計情報 (または統計情報のセット) に対する更新が不要になった場合、タイトルは単にその統計情報の追跡を停止する必要があります。
統計情報の更新が完全に不要になった場合、登録されているすべてのハンドラーを削除すると、次のコード例に示すように、関連する RTA サブスクリプションが自動的に削除されます。

#### フラット 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
);
```

> [!NOTE]
>
> クライアントがマルチプレイヤー セッションに RTA を使用しており、30 秒間切断された場合、Multiplayer Session Directory (MPSD) は RTA セッションが閉じていることを検出し、プレイヤーをセッションから削除します。その後、XSAPI が自動的に RTA 接続を再確立します。ただし、RTA サブスクリプションが再確立された後に MPSD セッションを書き直すのはタイトルの責任です。

## 関連項目

[XblStatisticChangeEventArgs](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs.md)

[XblUserStatisticsAddStatisticChangedHandler](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsaddstatisticchangedhandler.md)

[XblUserStatisticsRemoveStatisticChangedHandler](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsremovestatisticchangedhandler.md)


## Related topics

- [Real-Time Activity (RTA) サービスのサンプル コード (目次)](https://docs.xbox.com/ja-jp/services/xbox-services/fundamentals/rta/how-to/live-rta-howto-nav.md)
- [ハウツー](https://docs.xbox.com/ja-jp/services/xbox-services/fundamentals/rta/how-to/index.md)
- [ステータス変更通知のポータル構成](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-stat-change-notif-portal.md)
- [エンティティ プログラミング モデル](https://docs.xbox.com/ja-jp/services/playfab/live-service-management/game-configuration/entities/index.md)
- [クイックスタート (Windows) - PlayFab サービスの呼び出し](https://docs.xbox.com/ja-jp/services/playfab/sdks/unified-sdk/quickstart-services.md)
