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

# ロビーの招待

> PlayFab Lobby の招待を送信および受諾し、招待リスナーを使用して、ロビー メンバーおよびオーナーの権限を通じて誰が他者を招待できるかを制御します。

この記事では、ロビーの招待の概要と、Lobby and Matchmaking SDK での使い方について説明します。

<Note>
  プレイヤー (すなわち title\_player\_account PlayFab エンティティ) のみが招待を送受信できます。ゲーム サーバー (すなわち game\_server PlayFab エンティティ) はできません。ゲーム サーバーがロビーとどのようにやり取りするかの詳細については、[ゲーム サーバーとロビー](/services/playfab/multiplayer/lobby/lobby-server-overview) を参照してください。
</Note>

## 招待の種類

ゲームで利用する可能性が高い招待には 2 種類あります。

1. [ゲーム内招待](#joining-a-lobby-by-in-game-invites)
2. [プラットフォーム招待](#joining-a-lobby-by-platform-invites)

### ゲーム内招待によるロビーへの参加

* ロビーのメンバーは、ロビー サービスを介して直接、他のプレイヤーをそのロビーに招待できます。
* ロビー オーナーは、ロビー プロパティ **RestrictInvitesToLobbyOwner** を介して、招待の送信をオーナーのみに制限することを選択できます。
* この招待は、ロビーの接続文字列を招待されたプレイヤーと共有します。
* 招待されたプレイヤーは **PFLobbyInviteReceivedStateChange** を通じて招待を受け取り、添付された接続文字列を使用してロビーに参加できます。
* これらの招待はクロスプラットフォームで機能しますが、ゲーム内でのみ動作します。

### プラットフォーム招待によるロビーへの参加

* ロビーのメンバーは、プラットフォーム固有の招待メカニズムを介して、ロビーの接続文字列を他のプレイヤーに直接共有できます。
* これらの招待はクロスプラットフォームでは機能しませんが、受信者がゲームを既に実行していなくても受信できます。
* 招待されたプレイヤーがプラットフォーム メカニズム経由で接続文字列を受け取ると、添付された接続文字列を使用してロビーに参加できます。

## Lobby and Matchmaking SDK を使用した招待の送受信例

招待の受信者側でゲーム内招待の受信を有効にするには **PFMultiplayerStartListeningForLobbyInvites** を使用します。

招待リスナーは正常にセットアップされると、そのステータスが **Listening** に変わります。

```cpp theme={null}
HRESULT AllowInvitations(
    const PFEntityKey* entity)
{
    return PFMultiplayerStartListeningForLobbyInvites(g_pfmHandle, entity);
}

void HandleInvitationListenerStatusChange(
    const PFLobbyInvitationListenerStatusChangedStateChange& invitationListenerStateChange)
{
    PFLobbyInvitationListenerStatus status;
    HRESULT hr = PFMultiplayerGetLobbyInvitationListenerStatus(
        g_pfmHandle,
        &invitationListenerStateChange.listeningEntity,
        &status);
    assert(SUCCEEDED(hr));

    switch (status)
    {
        case PFLobbyInvitationListenerStatus::Listening:
        {
            Log("%s is listening for invitations", invitationListenerStateChange.listeningEntity.id);
            break;
        }
        case PFLobbyInvitationListenerStatus::NotAuthorized:
        {
            Log("Invitation listener not authorized!"); // this is likely an issue with the listener's entity token.
            break;
        }
        default:
    }
}
```

ロビー サービスを介して別の PlayFab ユーザーに招待を送信するには **PFLobbySendInvite** を使用します。

受信者は **PFLobbyInviteReceivedStateChange** を受け取ります。

```cpp theme={null}
HRESULT SendInvite(PFLobbyHandle lobby, const PFEntityKey* sender, const PFEntityKey* receiver)
{
    return PFLobbySendInvite(lobby, sender, receiver, nullptr);
}

void HandleInvitationNotification(const PFLobbyInviteReceivedStateChange& invite)
{
    Log("%s invited to lobby by %s", invite.listeningEntity.id, invite.invitingEntity.id);
    // pass invite.connectionString to PFMultiplayerJoinLobby
}
```

## 関連項目

* [ロビーとマッチメイキング](/services/playfab/multiplayer/lobby/lobby-and-matchmaking)
* [ロビーの検索](/services/playfab/multiplayer/lobby/find-lobbies)
* [ロビーへの参加](/services/playfab/multiplayer/lobby/join-lobbies)
* [ロビーのプロパティ](/services/playfab/multiplayer/lobby/lobby-properties)


## Related topics

- [ロビーへの参加](/ja-jp/services/playfab/multiplayer/lobby/join-lobbies.md)
- [Lobby と Matchmaking を組み合わせて使用する](/ja-jp/services/playfab/multiplayer/lobby/lobby-and-matchmaking.md)
- [PFLobbySendInvite](/ja-jp/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pflobbysendinvite.md)
- [PlayFab Multiplayer C++ SDK リリース ノート](/ja-jp/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-and-matchmaking-release-notes.md)
- [ロビーの作成](/ja-jp/services/playfab/multiplayer/lobby/create-a-lobby.md)
