> ## 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 및 Matchmaking SDK에서 이를 사용하는 방법에 대해 설명합니다.

<Note>
  플레이어(즉, title\_player\_account PlayFab 엔티티)만 초대를 보내거나 받을 수 있습니다. 게임 서버(즉, game\_server PlayFab 엔티티)는 그렇게 할 수 없습니다. 게임 서버가 로비와 상호 작용하는 방식에 대한 자세한 내용은 [Game Servers and Lobbies](/services/playfab/multiplayer/lobby/lobby-server-overview)를 참조하세요.
</Note>

## 초대 유형

게임에서 활용할 가능성이 있는 초대 유형은 두 가지입니다.

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
}
```

## 참고

* [Lobby 및 matchmaking](/services/playfab/multiplayer/lobby/lobby-and-matchmaking)
* [로비 찾기](/services/playfab/multiplayer/lobby/find-lobbies)
* [로비 참여](/services/playfab/multiplayer/lobby/join-lobbies)
* [Lobby properties](/services/playfab/multiplayer/lobby/lobby-properties)


## Related topics

- [로비 참여](/ko/services/playfab/multiplayer/lobby/join-lobbies.md)
- [로비와 매치메이킹을 함께 사용](/ko/services/playfab/multiplayer/lobby/lobby-and-matchmaking.md)
- [PlayFabMultiplayer.StopListeningForLobbyInvites](/ko/services/playfab/multiplayer/lobby/unity-multiplayer-api-reference/PlayFab.Multiplayer/PlayFabMultiplayer/StopListeningForLobbyInvites.md)
- [PFMultiplayerStopListeningForLobbyInvites](/ko/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstoplisteningforlobbyinvites.md)
- [PlayFabMultiplayer.StartListeningForLobbyInvites](/ko/services/playfab/multiplayer/lobby/unity-multiplayer-api-reference/PlayFab.Multiplayer/PlayFabMultiplayer/StartListeningForLobbyInvites.md)
