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

# Control de un cambio de relación social

> Código de XSAPI para controlar los eventos de cambio de relación social de los servicios de XBOX y agregar o quitar controladores cuando se actualiza la lista de amigos de un usuario.

Este tema proporciona código de ejemplo para controlar un cambio de relación social. En los ejemplos, `xboxLiveContext` es el `XblContextHandle` del usuario que inició sesión, `state` contiene el estado del título y `LogToFile` es una función de registro que define el título.

## Suscripción a cambios de relación

No es necesario suscribirse a los cambios de relación por separado. La API de servicios de XBOX (XSAPI) crea o reutiliza una única suscripción social de Real-Time Activity (RTA) para el contexto. Los controladores de cambio de relación y los controladores del recuento de solicitudes de amistad entrantes la comparten. XSAPI quita la suscripción solo después de que quite todos los controladores de ambos tipos.

> [!NOTE]
>
> `XblSocialSubscribeToSocialRelationshipChange` y `XblSocialUnsubscribeFromSocialRelationshipChange` están en desuso y no administran la suscripción de RTA. Quite las llamadas a ambas funciones de su código a la vez. Si su código ya creó un identificador de suscripción con `XblSocialSubscribeToSocialRelationshipChange`, libérelo llamando a `XblSocialUnsubscribeFromSocialRelationshipChange`.

## Adición de un controlador de cambio de relación

**API plana de C**

```cpp theme={null}
state.socialRelationshipChangedHandlerToken = XblSocialAddSocialRelationshipChangedHandler(
    xboxLiveContext,
    [](const XblSocialRelationshipChangeEventArgs* args, void* context)
    {
        UNREFERENCED_PARAMETER(context);
        LogToFile("Social relationship changed:");
        std::stringstream ss;
        for (size_t i = 0; i < args->xboxUserIdsCount; ++i)
        {
            if (i > 0) 
            {
                ss << ", ";
            }
            ss << args->xboxUserIds[i];
        }
        LogToFile("socialNotification = %u, affectedXuids = %s", args->socialNotification, ss.str().data());
    },
    nullptr
);
```

## Eliminación de un controlador de cambio de relación

**API plana de C**

```cpp theme={null}
HRESULT hr = XblSocialRemoveSocialRelationshipChangedHandler(xboxLiveContext, state.socialRelationshipChangedHandlerToken);
state.socialRelationshipChangedHandlerToken = 0;
```

## Control de un cambio en el número de solicitudes de amistad entrantes

**API plana de C**

```cpp theme={null}
XblFunctionContext friendRequestCountToken{ 0 };
HRESULT hr = XblSocialAddFriendRequestCountChangedHandler(
    xboxLiveContext,
    [](const XblSocialFriendRequestCountChangedEventArgs* args, void* context)
    {
        UNREFERENCED_PARAMETER(context);
        // args is valid only during the callback.
        LogToFile("Incoming friend requests: %zu", args->incomingFriendRequestCount);
    },
    nullptr,
    &friendRequestCountToken
);

if (SUCCEEDED(hr))
{
    // Keep the token until you no longer need notifications.
    state.friendRequestCountToken = friendRequestCountToken;
}
```

Cuando ya no necesite las notificaciones, quite el controlador. Quite solo un controlador que se haya registrado correctamente.

```cpp theme={null}
if (state.friendRequestCountToken != 0)
{
    HRESULT hr = XblSocialRemoveFriendRequestCountChangedHandler(xboxLiveContext, state.friendRequestCountToken);
    if (SUCCEEDED(hr))
    {
        state.friendRequestCountToken = 0;
    }
}
```

## Consulte también

[XblSocialAddSocialRelationshipChangedHandler](https://docs.xbox.com/es/reference/live/xsapi-c/social_c/functions/xblsocialaddsocialrelationshipchangedhandler.md)
[XblSocialRemoveSocialRelationshipChangedHandler](https://docs.xbox.com/es/reference/live/xsapi-c/social_c/functions/xblsocialremovesocialrelationshipchangedhandler.md)
[XblSocialAddFriendRequestCountChangedHandler](https://docs.xbox.com/es/reference/live/xsapi-c/social_c/functions/xblsocialaddfriendrequestcountchangedhandler.md)
[XblSocialRemoveFriendRequestCountChangedHandler](https://docs.xbox.com/es/reference/live/xsapi-c/social_c/functions/xblsocialremovefriendrequestcountchangedhandler.md)


## Related topics

- [Código de ejemplo del sistema de contactos (lista de amigos) (contenido)](https://docs.xbox.com/es/services/xbox-services/community/people-system/how-to/live-pplsys-howto-nav.md)
- [Procedimientos](https://docs.xbox.com/es/services/xbox-services/community/people-system/how-to/index.md)
- [Control de un cambio de presencia de título](https://docs.xbox.com/es/services/xbox-services/community/presence/how-to/live-handling-a-title-presence-change.md)
- [Control de un cambio de presencia de dispositivo](https://docs.xbox.com/es/services/xbox-services/community/presence/how-to/live-handling-a-device-presence-change.md)
- [Control de un cambio de estadística basada en eventos](https://docs.xbox.com/es/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-handling-eb-stat-change.md)
