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

# Controlar la activación de protocolo con Multiplayer Manager

> Usa XBOX Multiplayer Manager para controlar la activación de protocolo cuando un jugador acepta una invitación de juego o se une desde una tarjeta de jugador, incluido el control de la unión a la sala.

Este tema describe el uso de Multiplayer Manager para controlar la activación de protocolo.

La *activación* se produce cuando el sistema inicia automáticamente un juego en respuesta a otra acción. Normalmente, esto ocurre cuando un jugador acepta una invitación de juego de otro jugador.

Tu título puede activarse mediante protocolo de las siguientes maneras.

* Un usuario acepta una invitación de juego
* Un usuario selecciona "Join Game" en la tarjeta de jugador de un jugador

Este escenario cubre cómo controlar la activación de protocolo cuando se inicia el título, un jugador se une a la sala y hay un juego en curso (si existe).

Para ver un diagrama de flujo del proceso de activación de protocolo, consulta [Controlar la activación de protocolo (diagrama de flujo)](/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation).

Cuando un jugador acepta una invitación de juego o se une al juego de un amigo mediante la tarjeta de jugador, el juego se inicia en su dispositivo mediante la activación de protocolo.
Después de que se inicie el juego, obtén el identificador de la invitación mediante [XGameActivationRegisterForEvent](/reference/system/xgameactivation/functions/xgameactivationregisterforevent). Con el identificador de la invitación, llama a [XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby).

Si el usuario invitado no se agrega mediante [XblMultiplayerManagerLobbySessionAddLocalUser](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionaddlocaluser), [XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby) genera un error y proporciona el xuid para el que se envió la invitación al llamar a [XblMultiplayerEventArgsXuid](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayereventargsxuid) con el evento `JoinLobbyCompleted`.

Después de unirte a la sala, se recomienda establecer la dirección de conexión del miembro local y las propiedades personalizadas del miembro.
También puedes establecer el host mediante [XblMultiplayerManagerLobbySessionSetSynchronizedHost](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetsynchronizedhost) si no existe ninguno.

Por último, Multiplayer Manager une automáticamente al usuario a la sesión de juego si ya hay un juego en curso y hay espacio para el invitado.
El título recibe la notificación mediante el evento `JoinGameCompleted`, que proporciona un código de error y un mensaje adecuados.

#### API de C plana

```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 obtener más información, consulta [XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetlocalmemberconnectionaddress).

Multiplayer Manager realiza las siguientes funciones.

* Registrar las suscripciones de actividad en tiempo real y multijugador.
* Unirse a la sesión de sala.
* Limpieza del estado de sala existente.
* Unir a todos los jugadores locales como activos.
* Cargar la dirección segura de dispositivo (SDA).
* Establecer las propiedades de los miembros.
* Registrarse para los eventos de cambio de sesión.
* Establecer la sesión de sala como sesión activa.
* Unirse a la sesión de juego (si existe).
* Usar un identificador de transferencia.


## Related topics

- [Código de ejemplo de Multiplayer Manager](/es/services/xbox-services/multiplayer/mpm/how-to/live-mm-howto-nav.md)
- [Procedimientos](/es/services/xbox-services/multiplayer/mpm/how-to/index.md)
- [Manejo de la activación de protocolo (diagrama de flujo)](/es/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation.md)
- [Enviar invitaciones a otro jugador (diagrama de flujo)](/es/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-send-invites.md)
- [Información general sobre Multiplayer Manager](/es/services/xbox-services/multiplayer/mpm/live-multiplayer-manager-overview.md)
