次の方法で共有


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
);

Important

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

関連項目

XblStatisticChangeEventArgs

XblUserStatisticsAddStatisticChangedHandler

XblUserStatisticsRemoveStatisticChangedHandler