> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 초대 보내기

> Title-Callable UI 오버레이 또는 사용자 지정 인게임 UI가 있는 XblMultiplayerSendInvitesAsync API를 사용하여 타이틀에서 XBOX 멀티플레이어 게임 초대를 보냅니다.

이 항목을 사용하여 XBOX 서비스에서 사용자 간 멀티플레이어 게임 세션을 구성합니다.

게임은 다른 사용자에게 게임 세션에 참가하도록 초대를 보냅니다. 다른 사용자에게 게임 초대를 보내는 방법은 두 가지가 있습니다.
Title-Callable UI(TCUI)(시스템 UI 오버레이)를 사용하거나 타이틀에서 구현한 사용자 지정 UI를 사용할 수 있습니다.

## Title-Callable UI(TCUI)(시스템 UI 오버레이) 사용

[XGameUiShowSendGameInviteAsync](https://docs.xbox.com/ko/reference/system/xgameui/functions/xgameuishowsendgameinviteasync.md) API를 호출하면 친구를 초대하기 위한 표준 시스템 UI 오버레이가 검색됩니다.
이는 사용자가 게임에 초대할 친구 또는 [최근 플레이어 목록](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpa/concepts/live-mpa-recent-players.md)의 사용자를 선택하기 위해 탐색할 수 있는 UI를 표시합니다.
사용자가 **확인**을 선택하면 선택한 사용자에게 초대가 전송됩니다.

## 타이틀에서 구현한 사용자 지정 UI 사용

타이틀은 온라인 친구를 보고 게임 세션에 초대하기 위한 사용자 지정 UI를 구현할 수 있습니다.
다음 코드와 같이 [XblMultiplayerSendInvitesAsync](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersendinvitesasync.md) API를 사용하여 [XboxUserId (XUID)](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpa/concepts/live-mpa-activities.md)로 정의된 사용자 집합에 초대를 보냅니다.
이는 기본 시스템 UI 대신 자체 인게임 UI를 사용하려는 경우 유용합니다.

### Flat C

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take ownership of the XAsyncBlock*
    size_t handlesCount = 1; // must be equal to invites that are requested
    XblMultiplayerInviteHandle handles[1] = {};
    HRESULT hr = XblMultiplayerSendInvitesResult(asyncBlock, handlesCount, handles);
};

uint64_t xuids[1] = {};
xuids[0] = targetXuid;
size_t xuidsCount = 1;

HRESULT hr = XblMultiplayerSendInvitesAsync(
    xblContextHandle,
    &sessionReference,
    xuids,
    xuidsCount,
    titleId,
    contextStringId,
    customActivationContext,
    asyncBlock.get());
if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take ownership.
    // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
    asyncBlock.release();
}
```

## 참조 API 문서

* [Xgameactivation (API contents)](https://docs.xbox.com/ko/reference/system/xgameactivation/xgameactivation_members.md)
* [xgameui (API contents)](https://docs.xbox.com/ko/reference/system/xgameui/xgameui_members.md)
  * Functions
    * [XGameUiShowSendGameInviteAsync](https://docs.xbox.com/ko/reference/system/xgameui/functions/xgameuishowsendgameinviteasync.md)
* [multiplayer\_c (API contents)](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/multiplayer_c_members.md)
  * Functions
    * [XblMultiplayerSendInvitesAsync](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersendinvitesasync.md)
    * [XblMultiplayerSendInvitesResult](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersendinvitesresult.md)
  * Structures
    * [XblMultiplayerInviteHandle](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/structs/xblmultiplayerinvitehandle.md)
* [xasync (API contents)](https://docs.xbox.com/ko/reference/system/xasync/xasync_members.md)
  * Structures
    * [XAsyncBlock](https://docs.xbox.com/ko/reference/system/xasync/structs/xasyncblock.md)

## 참고 항목

[XAsyncBlock](https://docs.xbox.com/ko/reference/system/xasync/structs/xasyncblock.md)
[XblMultiplayerInviteHandle](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/structs/xblmultiplayerinvitehandle.md)
[XblMultiplayerSendInvitesAsync](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersendinvitesasync.md)
[XblMultiplayerSendInvitesResult](https://docs.xbox.com/ko/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersendinvitesresult.md)
[XGameActivation (API Reference)](https://docs.xbox.com/ko/reference/system/xgameactivation/xgameactivation_members.md)
[Multiplayer Manager를 사용하여 게임을 시작하기 위한 프로토콜 활성화 처리](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpm/how-to/live-handle-protocol-activation.md)
[Multiplayer Manager를 사용하여 게임 초대 보내기](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpm/how-to/live-send-game-invites.md)


## Related topics

- [다른 플레이어에게 초대 보내기(순서도)](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-send-invites.md)
- [초대 개요](https://docs.xbox.com/ko/services/xbox-services/multiplayer/invites/live-multiplayer-invites-overview.md)
- [Multiplayer Manager를 사용하여 게임 초대 보내기](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpm/how-to/live-send-game-invites.md)
- [초대 예제 코드](https://docs.xbox.com/ko/services/xbox-services/multiplayer/invites/how-to/live-invites-howto-nav.md)
- [다른 플레이어가 멀티플레이어 게임에 참여하도록 초대 보내기](https://docs.xbox.com/ko/services/xbox-services/multiplayer/mpa/concepts/live-mpa-invites.md)
