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

# Tratar a ativação de protocolo com o Multiplayer Manager

> Use o Multiplayer Manager do XBOX para tratar a ativação de protocolo quando um jogador aceita um convite de jogo ou ingressa pelo gamercard, incluindo o tratamento da entrada no lobby.

Este tópico descreve como usar o Multiplayer Manager para tratar a ativação de protocolo.

*Ativação* é quando o sistema inicia automaticamente um jogo em resposta a outra ação. Isso normalmente acontece quando um jogador aceita um convite de jogo de outro jogador.

Seu título pode ser ativado por protocolo das maneiras a seguir.

* Um usuário aceita um convite de jogo
* Um usuário seleciona "Join Game" no gamercard de um jogador

Este cenário aborda como tratar a ativação de protocolo quando seu título é iniciado, um jogador ingressa no lobby e há um jogo em andamento (se houver).

Para obter um fluxograma do processo de ativação de protocolo, consulte [Tratando a ativação de protocolo (fluxograma)](/pt-BR/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation).

Quando um jogador aceita um convite de jogo ou ingressa no jogo de um amigo pelo gamercard do jogador, o jogo é iniciado no dispositivo dele usando a ativação de protocolo.
Depois que o jogo for iniciado, obtenha o identificador de convite usando [XGameActivationRegisterForEvent](/pt-BR/reference/system/xgameactivation/functions/xgameactivationregisterforevent). Com o identificador de convite, chame [XblMultiplayerManagerJoinLobby](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby).

Se o usuário convidado não for adicionado por meio de [XblMultiplayerManagerLobbySessionAddLocalUser](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionaddlocaluser), [XblMultiplayerManagerJoinLobby](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby) falhará e fornecerá o xuid para o qual o convite foi enviado ao chamar [XblMultiplayerEventArgsXuid](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayereventargsxuid) com o evento `JoinLobbyCompleted`.

Depois de ingressar no lobby, recomendamos definir o endereço de conexão do membro local e quaisquer propriedades personalizadas do membro.
Você também pode definir o host por meio de [XblMultiplayerManagerLobbySessionSetSynchronizedHost](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetsynchronizedhost), caso não exista um.

Por fim, o Multiplayer Manager adiciona automaticamente o usuário à sessão de jogo se um jogo já estiver em andamento e houver espaço para o convidado.
O título é notificado por meio do evento `JoinGameCompleted`, que fornece um código de erro e uma mensagem apropriados.

#### API C simples

```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);
```

Para obter mais informações, consulte [XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress](/pt-BR/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetlocalmemberconnectionaddress).

O Multiplayer Manager executa as funções a seguir.

* Registra assinaturas do Real-Time Activity e do multiplayer.
* Ingressa na sessão de lobby.
* Limpa o estado existente do lobby.
* Adiciona todos os jogadores locais como ativos.
* Carrega o endereço de dispositivo seguro (SDA).
* Define as propriedades dos membros.
* Registra-se para eventos de alteração de sessão.
* Define a sessão de lobby como a sessão ativa.
* Ingressa na sessão de jogo (se houver).
* Usa um identificador de transferência.


## Related topics

- [Tratando a ativação de protocolo (fluxograma)](/pt-BR/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation.md)
- [Instruções](/pt-BR/services/xbox-services/multiplayer/mpm/how-to/index.md)
- [Código de exemplo do Multiplayer Manager](/pt-BR/services/xbox-services/multiplayer/mpm/how-to/live-mm-howto-nav.md)
- [Tarefas de multijogador](/pt-BR/services/xbox-services/multiplayer/mpsd/how-to/live-mpsd-how-tos.md)
- [Enviando convites para outro jogador (fluxograma)](/pt-BR/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-send-invites.md)
