> ## 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 實體) 則不行。如需遊戲伺服器如何與大廳互動的詳細資訊，請參閱[遊戲伺服器和大廳](/zh-TW/services/playfab/multiplayer/lobby/lobby-server-overview)。
</Note>

## 邀請類型

您的遊戲可能會使用兩種類型的邀請。

1. [遊戲內邀請](#joining-a-lobby-by-in-game-invites)
2. [平台邀請](#joining-a-lobby-by-platform-invites)

<a id="joining-a-lobby-by-in-game-invites" />

### 透過遊戲內邀請加入大廳

* 大廳的成員可以直接透過大廳服務邀請其他玩家加入該大廳。
* 大廳擁有者可以透過大廳屬性 **RestrictInvitesToLobbyOwner**，選擇將傳送邀請限制為只有擁有者可以傳送
* 此邀請會與受邀的玩家共用大廳的連接字串。
* 受邀的玩家會透過 **PFLobbyInviteReceivedStateChange** 收到邀請，並可使用附加的連接字串加入大廳。
* 這些邀請可跨平台運作，但只能在遊戲內運作。

<a id="joining-a-lobby-by-platform-invites" />

### 透過平台邀請加入大廳

* 大廳的成員可以透過平台專屬的邀請機制，直接與其他玩家共用大廳的連接字串。
* 這些邀請無法跨平台運作，但收件者不必已在執行遊戲即可收到。
* 受邀的玩家透過平台機制收到連接字串後，就可以使用附加的連接字串加入大廳。

## 使用 Lobby 和 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:
    }
}
```

使用 **PFLobbySendInvite** 透過大廳服務將邀請傳送給另一位 PlayFab 使用者。

收件者會收到 **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
}
```

## 另請參閱

* [大廳和配對](/zh-TW/services/playfab/multiplayer/lobby/lobby-and-matchmaking)
* [尋找大廳](/zh-TW/services/playfab/multiplayer/lobby/find-lobbies)
* [加入大廳](/zh-TW/services/playfab/multiplayer/lobby/join-lobbies)
* [大廳屬性](/zh-TW/services/playfab/multiplayer/lobby/lobby-properties)


## Related topics

- [搭配使用大廳和配對](/zh-TW/services/playfab/multiplayer/lobby/lobby-and-matchmaking.md)
- [PFMultiplayerStopListeningForLobbyInvites](/zh-TW/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstoplisteningforlobbyinvites.md)
- [PFMultiplayerStartListeningForLobbyInvites](/zh-TW/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pfmultiplayerstartlisteningforlobbyinvites.md)
- [PFLobbyGetRestrictInvitesToLobbyOwner](/zh-TW/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/functions/pflobbygetrestrictinvitestolobbyowner.md)
- [加入大廳](/zh-TW/services/playfab/multiplayer/lobby/join-lobbies.md)
