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

# Vue d'ensemble de Social Manager

> Comment l'API Social Manager des services XBOX simplifie le graphe social en utilisant Real-Time Activity pour maintenir à jour les données d'amis et de présence grâce à des appels synchrones.

Cette rubrique explique comment l'API Social Manager des services XBOX simplifie le suivi des amis en ligne et de leur activité de jeu.

Les services XBOX fournissent un graphe social riche que les titres peuvent utiliser dans divers scénarios.
L'utilisation des API sociales de l'API des services XBOX (XSAPI) pour obtenir et gérer des informations sur un graphe social est complexe. Maintenir ces informations à jour peut s'avérer compliqué.
Une mauvaise implémentation peut entraîner des problèmes de performances, des données obsolètes ou une limitation des requêtes, car les services sociaux des services XBOX sont appelés plus souvent que nécessaire.

Social Manager résout ce problème en procédant comme suit :

* Il fournit une API simple à appeler.
* Il fournit des informations à jour en utilisant le service Real-Time Activity (RTA) en arrière-plan.
* Les développeurs peuvent appeler l'API Social Manager de manière synchrone sans solliciter davantage le service.

Social Manager masque la complexité liée à la gestion de plusieurs abonnements RTA et à l'actualisation des données des utilisateurs; en permettant aux développeurs d'obtenir facilement le graphe à jour dont ils ont besoin, il ouvre la voie à des scénarios intéressants.

Pour plus d'informations, consultez [Mémoire et performances de Social Manager](/fr-CA/services/xbox-services/community/social-manager/concepts/live-socmgr-mem-perf).

## Fonctionnalités

Social Manager offre les fonctionnalités suivantes.

* API sociale simplifiée
* Graphe social à jour
* Contrôle du niveau de détail des informations affichées
* Réduction du nombre d'appels aux services XBOX
  * Cela se traduit directement par une réduction globale de la latence lors de l'acquisition des données
* Sécurité des threads
* Mise à jour efficace des données

## Concepts de base

**Graphe social** : un *graphe social* est créé pour un utilisateur local sur l'appareil.
Il s'agit d'une structure qui maintient à jour les informations sur tous les amis d'un utilisateur.

<Note>Sous Windows, il ne peut y avoir qu'un seul utilisateur local.</Note>

**Utilisateur social XBOX** : un *utilisateur social XBOX* est un ensemble complet de données sociales associées à un utilisateur d'un groupe.

**Groupe d'utilisateurs sociaux XBOX** : un groupe est un ensemble d'utilisateurs utilisé notamment pour remplir l'interface utilisateur.
Il existe deux types de groupes :

* **Groupes de filtres** : un *groupe de filtres* prend le *graphe social* d'un utilisateur local (appelant) et retourne un ensemble d'utilisateurs constamment actualisé en fonction des paramètres de filtre spécifiés.

* **Groupes de listes** : un *groupe de listes* prend une liste d'utilisateurs et retourne une vue constamment actualisée de ces utilisateurs. Ces utilisateurs peuvent ne pas figurer dans la liste d'amis de l'utilisateur.

Pour maintenir un *groupe d'utilisateurs sociaux* à jour, la fonction [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork) doit être appelée à chaque trame.

## Vue d'ensemble de l'API

Vous utiliserez le plus souvent les API clés suivantes.

### Ajout d'utilisateurs locaux à Social Manager

* Fonction de l'API C plate : [XblSocialManagerAddLocalUser](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanageraddlocaluser)

L'ajout d'un utilisateur local à Social Manager entraîne la création d'un *graphe social* pour cet utilisateur.
Une fois un utilisateur local ajouté, des *groupes d'utilisateurs sociaux* peuvent être créés pour cet utilisateur.

Social Manager maintient à jour les groupes d'utilisateurs sociaux XBOX et peut filtrer les groupes d'utilisateurs selon la présence ou la relation avec l'utilisateur.
Par exemple, il est possible de créer un groupe d'utilisateurs sociaux XBOX contenant tous les amis de l'utilisateur qui sont en ligne et jouent au titre actuel.
Ce groupe serait maintenu à jour à mesure que les amis commencent ou arrêtent de jouer au titre.

### Groupe d'utilisateurs sociaux XBOX

* Fonction de l'API C plate : [XblSocialManagerAddLocalUser](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanageraddlocaluser)

Un groupe d'utilisateurs sociaux XBOX est un groupe d'utilisateurs qui répondent à certains critères, comme décrit précédemment.
Les groupes d'utilisateurs sociaux XBOX exposent leur type, les utilisateurs suivis ou l'ensemble de filtres qui leur est appliqué, ainsi que l'utilisateur local auquel le groupe appartient.

Vous trouverez une description complète des API Social Manager dans la [référence de l'API XBOX Live](https://aka.ms/xboxliveuwpdocs).
Vous pouvez également trouver les API dans la documentation des éléments préfixés par `XblSocialManager`.

## Utilisation

### Création d'un groupe d'utilisateurs sociaux à partir de filtres

Dans ce scénario, vous souhaitez obtenir une liste d'utilisateurs à partir d'un filtre, comme la liste des amis d'un utilisateur ou le sous-ensemble d'amis qu'il a marqués comme favoris.

**API C plate**

```cpp theme={null}
HRESULT hr = XblSocialManagerAddLocalUser(user, extraLevelDetail, nullptr);

XblPresenceFilter presenceFilter{ XblPresenceFilter::All };
XblRelationshipFilter relationshipFilter{ XblRelationshipFilter::Friends };

XblSocialManagerUserGroupHandle groupHandle{ nullptr };
HRESULT hr = XblSocialManagerCreateSocialUserGroupFromFilters(user, presenceFilter, relationshipFilter, &groupHandle);

if (SUCCEEDED(hr))
{
    state.groups.insert(groupHandle);
}

// Some update loop in the game.
while (true)
{
    const XblSocialManagerEvent* events{ nullptr };
    size_t eventCount{ 0 };
    HRESULT hr = XblSocialManagerDoWork(&events, &eventCount);
    if (SUCCEEDED(hr))
    {
        for (size_t i = 0; i < eventCount; i++)
        {
            // Act on the event.
        }
    }
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblPresenceFilter](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblpresencefilter)
* [XblRelationshipFilter](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblrelationshipfilter)
* [XblSocialManagerAddLocalUser](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanageraddlocaluser)
* [XblSocialManagerCreateSocialUserGroupFromFilters](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagercreatesocialusergroupfromfilters)
* [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork)
* [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent)

#### Événements retournés

**Utilisateur local ajouté** : se déclenche lorsque le chargement du graphe social d'un utilisateur est terminé. Indique si des erreurs se sont produites pendant l'initialisation.

* API C plate : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::LocalUserAdded`

**Groupe d'utilisateurs sociaux chargé** : se déclenche lorsqu'un groupe d'utilisateurs sociaux a été créé.

* API C plate : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::SocialUserGroupLoaded`

**Utilisateurs ajoutés au graphe social** : se déclenche lorsque les utilisateurs sont chargés.

* API C plate : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::UsersAddedToSocialGraph`

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype) (API C plate)

#### Détails supplémentaires

**API C plate**
L'exemple précédent montre comment initialiser Social Manager pour un utilisateur, créer un groupe d'utilisateurs sociaux pour cet utilisateur et le maintenir à jour.

Les options de filtrage sont les énumérations [XblPresenceFilter](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblpresencefilter) et [XblRelationshipFilter](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblrelationshipfilter).

Dans la boucle de jeu, la fonction [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork) met à jour toutes les vues créées avec le dernier instantané des utilisateurs de ce groupe.

Les utilisateurs de la vue peuvent être obtenus en appelant la fonction [XblSocialManagerUserGroupGetUsers](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerusergroupgetusers). Celle-ci retourne un `XblSocialManagerUserPtrArray`, un tableau d'objets [XblSocialManagerUser](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanageruser) appartenant à XSAPI.
[XblSocialManagerUser](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanageruser) contient les informations sociales telles que le gamertag, la gamerpic et l'URI.

### Créer et mettre à jour un groupe d'utilisateurs sociaux à partir d'une liste

Dans ce scénario, vous souhaitez obtenir les informations sociales d'une liste d'utilisateurs, comme les utilisateurs d'une session multijoueur.

**API C plate**

```cpp theme={null}
HRESULT hr = XblSocialManagerAddLocalUser(user, extraLevelDetail, nullptr);

// List of xuids to track.
std::vector<uint64_t> xuids
{
    listXuids.begin() + static_cast<int>(offset),
    listXuids.begin() + static_cast<int>(offset + count) 
}; 

XblSocialManagerUserGroupHandle groupHandle{ nullptr };
HRESULT hr = XblSocialManagerCreateSocialUserGroupFromList(user, xuids.data(), xuids.size(), &groupHandle);

if (SUCCEEDED(hr))
{
    state.groups.insert(groupHandle);
}

// Some update loop in the game.
while (true)
{
    const XblSocialManagerEvent* events{ nullptr };
    size_t eventCount{ 0 };
    HRESULT hr = XblSocialManagerDoWork(&events, &eventCount);
    if (SUCCEEDED(hr))
    {
        for (size_t i = 0; i < eventCount; i++)
        {
            // Act on the event
        }
    }
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerAddLocalUser](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanageraddlocaluser)
* [XblSocialManagerCreateSocialUserGroupFromList](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagercreatesocialusergroupfromlist)
* [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork)
* [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent)

#### Événements retournés

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::LocalUserAdded`. Se déclenche lorsque le chargement du graphe social de l'utilisateur est terminé. Indique si des erreurs se sont produites pendant l'initialisation.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::SocialUserGroupLoaded`. Se déclenche lorsqu'un groupe d'utilisateurs sociaux a été créé et que les utilisateurs suivis ont été ajoutés au graphe social.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::UsersAddedToSocialGraph`. Se déclenche lorsque les utilisateurs sont chargés.

### Mise à jour d'un groupe d'utilisateurs sociaux à partir d'une liste

Vous pouvez également modifier la liste des utilisateurs suivis dans le groupe d'utilisateurs sociaux en appelant [XblSocialManagerUpdateSocialUserGroup](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerupdatesocialusergroup).

**API C plate**

```cpp theme={null}
// New list of xuids to track.
std::vector<uint64_t> xuids
{ 
    listXuids.begin() + static_cast<int>(offset),
    listXuids.begin() + static_cast<int>(offset + count)
};

HRESULT hr = XblSocialManagerUpdateSocialUserGroup(group, xuids.data(), xuids.size());

// Some update loop in the game.
while (true)
{
    const XblSocialManagerEvent* events{ nullptr };
    size_t eventCount{ 0 };
    HRESULT hr = XblSocialManagerDoWork(&events, &eventCount);
    if (SUCCEEDED(hr))
    {
        for (size_t i = 0; i < eventCount; i++)
        {
            // Act on the event.
        }
    }
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork)
* [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent)
* [XblSocialManagerUpdateSocialUserGroup](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerupdatesocialusergroup)

#### Événements retournés

**Groupe d'utilisateurs sociaux mis à jour** : se déclenche lorsque la mise à jour du groupe d'utilisateurs sociaux est terminée.

* C++ : `social_user_group_updated`
* C : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)::SocialUserGroupUpdated

**Utilisateurs ajoutés au graphe social** : se déclenche lorsque les utilisateurs sont chargés. Si les utilisateurs ajoutés au moyen de la liste figurent déjà dans le graphe, cet événement ne se déclenche pas.

* C++ : `users_added_to_social_graph`
* C : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)::UsersAddedToSocialGraph

**Utilisateurs supprimés du graphe social** : se déclenche lorsque les utilisateurs précédents sont supprimés du graphe social.

* C : [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)::UsersRemovedFromSocialGraph

### Utilisation des événements de Social Manager

Social Manager vous indique ce qui s'est passé sous forme d'événements.
Vous pouvez utiliser ces événements pour mettre à jour votre interface utilisateur ou exécuter une autre logique.

**API C plate**

```cpp theme={null}
// Some update loop in the game.
while (true)
{
    const XblSocialManagerEvent* events{ nullptr };
    size_t eventCount{ 0 };
    HRESULT hr = XblSocialManagerDoWork(&events, &eventCount);
    if (SUCCEEDED(hr))
    {
        for (size_t i = 0; i < eventCount; i++)
        {
            // Act on the event.
            auto& socialEvent = events[i];
            std::stringstream ss;
            ss << "XblSocialManagerDoWork: Event of type " << eventTypesMap[socialEvent.eventType] << std::endl;
            for (uint32_t i = 0; i < XBL_SOCIAL_MANAGER_MAX_AFFECTED_USERS_PER_EVENT; i++)
            {
                if (socialEvent.usersAffected[i] != nullptr)
                {
                    if (i == 0)
                    {
                        ss << "Users affected: " << std::endl;
                    }
                    ss << "\t" << socialEvent.usersAffected[i]->gamertag << std::endl;
                }
            }
            LogToFile(ss.str().c_str());
        }
    }
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork)
* [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent)

#### Événements retournés

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::LocalUserAdded`. Se déclenche lorsque le chargement du graphe social d'un utilisateur est terminé. Indique si des erreurs se sont produites pendant l'initialisation.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::SocialUserGroupLoaded`. Se déclenche lorsqu'un groupe d'utilisateurs sociaux a été créé.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::UsersAddedToSocialGraph`. Se déclenche lorsque les utilisateurs sont chargés.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::UsersRemovedFromSocialGraph`. Se déclenche lorsqu'un utilisateur est supprimé du graphe social.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::PresenceChanged`. Se déclenche lorsque la présence d'un utilisateur du graphe social change.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::ProfilesChanged`. Se déclenche lorsque le profil d'un utilisateur du graphe social change.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::SocialRelationshipsChanged`. Se déclenche lorsque la relation entre l'utilisateur local et un autre utilisateur du graphe social change.

[XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::SocialUserGroupUpdated`. Se déclenche lorsqu'une mise à jour d'un groupe d'utilisateurs sociaux est terminée.

#### Détails supplémentaires

Cet exemple illustre une partie du contrôle supplémentaire offert par Social Manager.

Au lieu de compter sur les filtres des groupes d'utilisateurs sociaux pour fournir une liste d'utilisateurs actualisée pendant la boucle de jeu, le graphe social est initialisé en dehors de la boucle de jeu.
Le titre s'appuie ensuite sur les *événements* retournés par la fonction [XblSocialManagerDoWork](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdowork).

Les *événements* sont une liste de [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent). Chaque [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent) contient une modification du graphe social survenue au cours de la dernière trame.
Par exemple, [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::ProfilesChanged` et [XblSocialManagerEventType](/fr-CA/reference/live/xsapi-c/social_manager_c/enums/xblsocialmanagereventtype)`::UsersAddedToSocialGraph`.

Pour plus d'informations, consultez la documentation de l'API [XblSocialManagerEvent](/fr-CA/reference/live/xsapi-c/social_manager_c/structs/xblsocialmanagerevent).

### Nettoyage

#### Nettoyage des groupes d'utilisateurs sociaux

L'exemple suivant nettoie le groupe d'utilisateurs sociaux qui a été créé.
L'appelant doit également supprimer toutes les références qu'il détient vers les groupes d'utilisateurs sociaux créés, car ceux-ci ne sont plus valides.

**API C plate**

```cpp theme={null}
HRESULT hr = XblSocialManagerDestroySocialUserGroup(groupHandle);
if (SUCCEEDED(hr))
{
    state.groups.erase(groupHandle);
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerDestroySocialUserGroup](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerdestroysocialusergroup)

#### Nettoyage des utilisateurs locaux

Comme le montre l'exemple suivant, la suppression d'un utilisateur local supprime le graphe social chargé de cet utilisateur ainsi que tous les groupes d'utilisateurs sociaux créés à l'aide de cet utilisateur.

Avec l'API C plate, vous ne recevez plus aucun événement pour l'utilisateur supprimé.

**API C plate**

```cpp theme={null}
HRESULT hr = XblSocialManagerRemoveLocalUser(user);
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialManagerRemoveLocalUser](/fr-CA/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanagerremovelocaluser)


## Related topics

- [Vue d'ensemble des fonctionnalités sociales](/fr-CA/services/xbox-services/community/live-social-overview.md)
- [Social Manager](/fr-CA/services/xbox-services/community/social-manager/live-social-manager-nav.md)
- [Vue d'ensemble de WinHTTP](/fr-CA/build/console-features/networking/web-requests/intro-winhttp.md)
- [Vue d'ensemble de l'API XBOX Achievements Manager](/fr-CA/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
- [Vue d'ensemble de Multiplayer Manager](/fr-CA/services/xbox-services/multiplayer/mpm/live-multiplayer-manager-overview.md)
