> ## 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, couvrant l'ajout, la suppression et l'affichage d'amis ainsi que la liaison 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. Notamment, l'amitié dans 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 avoir des règles de réciprocité, il incombe à votre titre de faire respecter ces conditions au moyen d'un serveur de jeu personnalisé ou d'une logique CloudScript, au besoin.

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 aussi à 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 tout 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. La fonctionnalité comprend habituellement, 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 retirer 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

Il existe d'autres choses à faire avec les amis en plus de les ajouter, de les supprimer et de les afficher.

### Étiqueter des 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), comprend une liste d'étiquettes pour l'ami. Lors de la mise à jour de la liste, vous voudrez ajouter des éléments à cette liste et en retirer, puis l'inclure dans l'appel d'API (comme illustré 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 étiquettes pour orienter le jumelage (par exemple, le joueur n'aime pas jouer avec les amis étiquetés **2tuff** en difficulté élevée), mettre en œuvre des groupes d'amis, ou simplement pour stocker toute métadonnée associée à une relation dont vous avez besoin.

Il est important de noter que PlayFab n'indexe actuellement ces étiquettes d'aucune façon. [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 répercussions de ce système sur les performances.


## Related topics

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