> ## 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.

# Multiplayer Manager でプロトコル アクティベーションを処理する

> XBOX Multiplayer Manager を使用して、プレイヤーがゲーム招待を承諾したときやゲーマー カードから参加したときのプロトコル アクティベーションを処理します。ロビー参加処理を含みます。

このトピックでは、Multiplayer Manager を使用してプロトコル アクティベーションを処理する方法について説明します。

*アクティベーション*とは、別のアクションに応答してシステムが自動的にゲームを起動することです。これは通常、プレイヤーが他のプレイヤーからのゲーム招待を承諾したときに行われます。

タイトルは、以下の方法でプロトコル アクティベーションを行うことができます。

* ユーザーがゲーム招待を承諾する
* ユーザーがプレイヤーのゲーマー カードから「ゲームに参加」を選択する

このシナリオでは、タイトルが起動され、プレイヤーがロビーに参加し、ゲームが進行中 (存在する場合) の場合に、プロトコル アクティベーションを処理する方法について説明します。

プロトコル アクティベーション プロセスのフローチャートについては、[プロトコル アクティベーションの処理 (フローチャート)](/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation) を参照してください。

プレイヤーがゲーム招待を承諾したり、プレイヤーのゲーマー カードを通じてフレンドのゲームに参加したりすると、プロトコル アクティベーションを使用してデバイス上でゲームが起動されます。
ゲームの開始後、[XGameActivationRegisterForEvent](/reference/system/xgameactivation/functions/xgameactivationregisterforevent) を使用して招待ハンドルを取得します。招待ハンドルを使用して、[XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby) を呼び出します。

招待されたユーザーが [XblMultiplayerManagerLobbySessionAddLocalUser](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionaddlocaluser) を介して追加されていない場合、[XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby) は失敗し、`JoinLobbyCompleted` イベントで [XblMultiplayerEventArgsXuid](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayereventargsxuid) を呼び出すことにより、招待が送信された対象の xuid を提供します。

ロビーに参加した後、ローカル メンバーの接続アドレスとメンバーのカスタム プロパティを設定することをお勧めします。
また、ホストが存在しない場合は、[XblMultiplayerManagerLobbySessionSetSynchronizedHost](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetsynchronizedhost) を介してホストを設定することもできます。

最後に、既にゲームが進行中で、招待されたユーザーのためのスペースがある場合、Multiplayer Manager はユーザーをゲーム セッションに自動参加させます。
タイトルは `JoinGameCompleted` イベントを通じて通知され、適切なエラー コードとメッセージが提供されます。

#### フラット C API

```cpp theme={null}
#include <XTaskQueue.h>
#include <XGameActivation.h>  
  
XTaskQueueHandle g_taskQueue;  
XTaskQueueRegistrationToken g_activationToken;  
  
void CALLBACK OnActivation(void* context, const XGameActivationInfo* activationInfo)  
{  
    if (activationInfo->type == XGameActivationType::AcceptedGameInvite)
    {
        if (activationInfo->inviteUri != nullptr)
        {
            std::string inviteString(activationInfo->inviteUri);
            auto pos = inviteString.find("handle=");
            auto inviteHandeId = inviteString.substr(pos + 7, 36);
            // Now, call XblMultiplayerManagerJoinLobby.
        }
    }
}  
  
void InitializeGame()  
{  
    XGameActivationRegisterForEvent(g_taskQueue, nullptr, OnActivation, &g_activationToken);  
}  
  
void ShutdownGame()  
{  
    XGameActivationUnregisterForEvent(g_activationToken, true);  
}  
```

```cpp theme={null}
HRESULT hr = XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress(
    xblUserHandle, connectionAddress, context);
```

詳細については、[XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetlocalmemberconnectionaddress) を参照してください。

Multiplayer Manager は以下の機能を実行します。

* Real-Time Activity およびマルチプレイヤー サブスクリプションの登録。
* ロビー セッションへの参加。
* 既存のロビー状態のクリーンアップ。
* すべてのローカル プレイヤーをアクティブとして参加させる。
* セキュア デバイス アドレス (SDA) のアップロード。
* メンバー プロパティの設定。
* セッション変更イベントの登録。
* ロビー セッションをアクティブなセッションとして設定する。
* ゲーム セッションへの参加 (存在する場合)。
* 転送ハンドルの使用。


## Related topics

- [プロトコル アクティベーションの処理 (フローチャート)](/ja-jp/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation.md)
- [Multiplayer 概念の概要](/ja-jp/services/xbox-services/multiplayer/concepts/live-multiplayer-concepts.md)
- [マルチプレイヤータスク](/ja-jp/services/xbox-services/multiplayer/mpsd/how-to/live-mpsd-how-tos.md)
- [ハウツー](/ja-jp/services/xbox-services/multiplayer/mpm/how-to/index.md)
- [他のプレイヤーに招待を送信する (フローチャート)](/ja-jp/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-send-invites.md)
