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

# Listes d'amis

> Tutoriel de démarrage rapide pour créer des listes d'amis PlayFab dans Unity, expliquant comment ajouter, supprimer et afficher des amis, et lier des amis Steam, Facebook et XBOX.

Les listes d'amis sont une excellente fonctionnalité pour améliorer la capacité de vos joueurs à socialiser. Elles sont faciles à utiliser et peuvent rendre les classements plus attrayants pour vos utilisateurs.

## Prérequis

### SDK : Unity

* L'ID de titre est défini dans l'objet `PlayFabSharedSettings`.
* Le projet peut connecter un utilisateur avec succès.
* Le titre compte au moins deux utilisateurs inscrits.

## À propos des amis

N'importe quel joueur de votre titre peut être ami avec n'importe quel autre joueur de votre titre. En particulier, l'amitié sur PlayFab est à sens unique.

Si **Albert** ajoute **Bob** comme ami, il n'y a *aucun* processus d'approbation pour **Bob**.  En fait, **Bob** peut ne pas en être informé.

**Bob** doit ajouter **Albert** séparément pour que l'amitié soit *mutuelle*. Si vous souhaitez mettre en place des règles de réciprocité, il incombe à votre titre de faire respecter ces conditions avec un serveur de jeu personnalisé ou une logique CloudScript, si nécessaire.

Si un joueur a lié son compte Steam, Facebook ou XBOX Live, ses amis propres à la plateforme peuvent également être affichés, si ces amis jouent également à votre titre.

## Se faire des amis

L'exemple de code utilise les fonctions `DisplayFriends()` et `DisplayError(string error)` comme substitut de l'interface utilisateur de votre application. Vous pouvez les coller dans votre éditeur pour que cela fonctionne sans effort supplémentaire, ou remplacer les appels par votre propre code.

```csharp theme={null}
void DisplayFriends(List<FriendInfo> friendsCache) { friendsCache.ForEach(f => Debug.Log(f.FriendPlayFabId)); }
void DisplayPlayFabError(PlayFabError error) { Debug.Log(error.GenerateErrorReport()); }
void DisplayError(string error) { Debug.LogError(error); }
```

1. Une fois qu'un joueur est connecté, il peut accéder à l'interface utilisateur des amis. Les fonctionnalités incluent généralement, au minimum, l'ajout, la suppression et l'affichage d'amis.
2. Pour obtenir la liste d'amis actuelle du joueur, utilisez l'appel d'API [GetFriendsList](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist).

```csharp theme={null}
List<FriendInfo> _friends = null;

void GetFriends() {
    PlayFabClientAPI.GetFriendsList(new GetFriendsListRequest {
        IncludeSteamFriends = false,
        IncludeFacebookFriends = false,
        XboxToken = null
    }, result => {
        _friends = result.Friends;
        DisplayFriends(_friends); // triggers your UI
    }, DisplayPlayFabError);
}
```

Le résultat de [GetFriendsList](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist) contient un paramètre friends, qui est une liste d'objets [FriendInfo](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist#friendinfo).

3. Pour ajouter un ami à la liste d'amis du joueur, utilisez l'appel d'API [AddFriend](xref:titleid.playfabapi.com.client.friendlistmanagement.addfriend).

```csharp theme={null}
enum FriendIdType { PlayFabId, Username, Email, DisplayName };

void AddFriend(FriendIdType idType, string friendId) {
    var request = new AddFriendRequest();
    switch (idType) {
        case FriendIdType.PlayFabId:
            request.FriendPlayFabId = friendId;
            break;
        case FriendIdType.Username:
            request.FriendUsername = friendId;
            break;
        case FriendIdType.Email:
            request.FriendEmail = friendId;
            break;
        case FriendIdType.DisplayName:
            request.FriendTitleDisplayName = friendId;
            break;
    }
    // Execute request and update friends when we are done
    PlayFabClientAPI.AddFriend(request, result => {
        Debug.Log("Friend added successfully!");
    }, DisplayPlayFabError);
}
```

4. Pour supprimer un joueur de la liste d'amis d'un joueur, utilisez l'appel d'API [RemoveFriend](xref:titleid.playfabapi.com.client.friendlistmanagement.removefriend).

```csharp theme={null}
// unlike AddFriend, RemoveFriend only takes a PlayFab ID
// you can get this from the FriendInfo object under FriendPlayFabId
void RemoveFriend(FriendInfo friendInfo) {
    PlayFabClientAPI.RemoveFriend(new RemoveFriendRequest {
        FriendPlayFabId = friendInfo.FriendPlayFabId
    }, result => {
        _friends.Remove(friendInfo);
    }, DisplayPlayFabError);
}
```

## Aller plus loin

Vous pouvez faire d'autres choses avec les amis en plus de les ajouter, de les supprimer et de les afficher.

### Ajout de balises aux amis

L'objet [FriendInfo](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist#friendinfo), récupéré à partir de [GetFriendsList](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist), inclut une liste de balises pour l'ami. Lors de la mise à jour de la liste, vous devez ajouter des éléments à cette liste ou en supprimer, puis l'inclure dans l'appel d'API (comme indiqué ci-dessous).

```csharp theme={null}
// this REPLACES the list of tags on the server
// for updates, make sure this includes the original tag list
void SetFriendTags(FriendInfo friend, List<string> newTags)
{
    // update the tags with the edited list
    PlayFabClientAPI.SetFriendTags(new SetFriendTagsRequest
    {
        FriendPlayFabId = friend.FriendPlayFabId,
        Tags = newTags
    }, tagresult => {
        // Make sure to save new tags locally. That way you do not have to hard-update friendlist
        friend.Tags = newTags;
    }, DisplayPlayFabError);
}
```

Vous pouvez utiliser les balises pour orienter la mise en relation (par exemple, le joueur n'aime pas jouer avec des amis marqués **2tuff** en difficulté élevée), implémenter des groupes d'amis, ou simplement les utiliser pour stocker toutes les métadonnées associées à une relation dont vous avez besoin.

Notez que PlayFab n'indexe actuellement ces balises d'aucune manière. [GetFriendsList](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist) ne peut pas filtrer en fonction de celles-ci ; ce filtrage doit donc être effectué localement.

Gardez cela à l'esprit lorsque vous évaluez les implications en matière de performances de ce système.


## Related topics

- [Exigences XBOX](/fr/services/playfab/multiplayer/networking/xbox-requirements.md)
- [Invitations PlayFab Party et modèle de sécurité](/fr/services/playfab/multiplayer/networking/concepts-invitations-security-model.md)
- [XR070 Liste d'amis](/fr/publishing/certification/fma/xr-070.md)
- [Amis](/fr/services/playfab/community/associations/friends/index.md)
- [Exigences XBOX testées lors de la certification pour les jeux XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
