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 セッションを再書き込みするのはタイトルの責任です。