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

# Gestion d'un changement de relation sociale

> Code XSAPI permettant de gérer les événements de changement de relation sociale des services XBOX et d'ajouter ou de supprimer des gestionnaires lorsque la liste d'amis d'un utilisateur est mise à jour.

Cette rubrique fournit un exemple de code pour gérer un changement de relation sociale. Dans les exemples, `xboxLiveContext` est le `XblContextHandle` de l'utilisateur connecté, `state` contient l'état de votre titre et `LogToFile` est une fonction de journalisation définie par votre titre.

## Abonnement aux changements de relation

Vous n'avez pas besoin de vous abonner séparément aux changements de relation. L'API des services XBOX (XSAPI) crée ou réutilise un abonnement social Real-Time Activity (RTA) unique pour le contexte. Les gestionnaires de changement de relation et les gestionnaires du nombre de demandes d'ami entrantes le partagent. XSAPI ne supprime l'abonnement qu'après que vous avez supprimé tous les gestionnaires des deux types.

> [!NOTE]
>
> `XblSocialSubscribeToSocialRelationshipChange` et `XblSocialUnsubscribeFromSocialRelationshipChange` sont dépréciées et ne gèrent pas l'abonnement RTA. Supprimez leurs appels de votre code par paire. Si votre code a déjà créé un handle d'abonnement avec `XblSocialSubscribeToSocialRelationshipChange`, libérez-le en appelant `XblSocialUnsubscribeFromSocialRelationshipChange`.

## Ajout d'un gestionnaire de changement de relation

**API C plate**

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

## Suppression d'un gestionnaire de changement de relation

**API C plate**

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

## Gestion d'un changement du nombre de demandes d'ami entrantes

**API C plate**

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

Lorsque vous n'avez plus besoin des notifications, supprimez le gestionnaire. Ne supprimez qu'un gestionnaire qui a été inscrit avec succès.

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

## Voir aussi

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


## Related topics

- [Exemple de code du système de personnes (liste d'amis) (contenu)](https://docs.xbox.com/fr/services/xbox-services/community/people-system/how-to/live-pplsys-howto-nav.md)
- [Procédures](https://docs.xbox.com/fr/services/xbox-services/community/people-system/how-to/index.md)
- [Gestion d'un changement de présence de titre](https://docs.xbox.com/fr/services/xbox-services/community/presence/how-to/live-handling-a-title-presence-change.md)
- [Gestion d'un changement de présence d'appareil](https://docs.xbox.com/fr/services/xbox-services/community/presence/how-to/live-handling-a-device-presence-change.md)
- [Configurer les relations de produit d'un jeu](https://docs.xbox.com/fr/publishing/game-publishing/tutorial-xbox-managed/how-to-create-product-relationships.md)
