Skip to main content

Integrate Friends service with the client SDK

Last updated on October 24, 2024

Introduction

The Friends service can be used to connect players with each other so they can perform social activities in the game such as chatting, seeing presence statuses and inviting each other to join a party. To manage friends, you will use the Lobby interface which uses WebSocket to ensure real-time updates.

Integration with this service will allow you to manage friend requests, retrieve a player's list of friends, and synchronize a player's friends from third-party platforms automatically so that they don't have to send a new friend request. The game client will need to register to listen for friend notifications with the Lobby service in order to know when another player is requesting an interaction.

Implement friend interactions

Search for players

You can search for a player's account information using their Display Name or Username as the query. You can configure the type of search by setting the enum of SearchType for Unity and EAccelByteSearchType for Unreal to DisplayName or Username.

FString Query = FString("UsersDisplayName");
EAccelByteSearchType By = EAccelByteSearchType::DISPLAYNAME;

FRegistry::User.SearchUsers(Query, By, THandler < FPagedPublicUsersInfo > ::CreateLambda([](const FPagedPublicUsersInfo & Result) {
// Do something if SearchUsers succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode,
const FString & ErrorMessage) {
// Do something if SearchUsers fails
UE_LOG(LogTemp, Log, TEXT("Error SearchUsers, Error Code: %d Error Message: %s"), ErrorCode, * ErrorMessage);
}));

Retrieve the Friends List

Use the following function to retrieve a friends list.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetLoadFriendListResponseDelegate(AccelByte::Api::Lobby::FLoadFriendListResponse::CreateLambda([](const FAccelByteModelsLoadFriendListResponse & Result) {
// Do something if LoadFriendListResponseDelegate succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode,
const FString & ErrorMessage) {
// Do something if LoadFriendListResponseDelegate fails
UE_LOG(LogTemp, Log, TEXT("Error LoadFriendListResponseDelegate, Error Code: %d Error Message: %s"), ErrorCode, * ErrorMessage);
}));

FRegistry::Lobby.LoadFriendsList();

Send a Friend request using a user ID

The first step in making a friend is sending a friend request to another player. Use this code to send a friend request using a User ID.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetRequestFriendsResponseDelegate(AccelByte::Api::Lobby::FRequestFriendsResponse::CreateLambda([](const FAccelByteModelsRequestFriendsResponse & Result) {
// Do something if RequestFriendsResponseDelegate succeeds
}), FErrorHandler::CreateLambda([](int32 ErrorCode,
const FString & ErrorMessage) {
// Do something if RequestFriendsResponseDelegate fails
UE_LOG(LogTemp, Log, TEXT("Error RequestFriendsResponseDelegate, Error Code: %d Error Message: %s"), ErrorCode, * ErrorMessage);
}));

FString UserId = FString("SomeUserId");
FRegistry::Lobby.RequestFriend(UserId);

Retrieve the list of incoming Friend requests

Use this function to retrieve all the information about incoming friend requests. This function retrieves user ID which you can use to accept or reject each request.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetListIncomingFriendsResponseDelegate(AccelByte::Api::Lobby::FListIncomingFriendsResponse::CreateLambda([](const FAccelByteModelsListIncomingFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if ListIncomingFriendsResponseDelegate succeeds
} else {
// Do something if ListIncomingFriendsResponseDelegate fails
}
}));

FRegistry::Lobby.ListIncomingFriends();

FRegistry::Lobby.LoadFriendsList();

Accept incoming friend requests

After a friend request has been sent, the player who received the request can either accept or reject it. To accept a friend request, use this function:

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetAcceptFriendsResponseDelegate(AccelByte::Api::Lobby::FAcceptFriendsResponse::CreateLambda([](const FAccelByteModelsAcceptFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if AcceptFriendsResponseDelegate succeeds
} else {
// Do something if AcceptFriendsResponseDelegate fails
}
}));

FString UserId = FString("SomeUserId");
FRegistry::Lobby.AcceptFriend(UserId);

Reject incoming Friend requests

You can reject the incoming friend request by their User ID. To get the user ID, you need to retrieve a list of incoming friend requests, copy the User ID, and store it somewhere safe for use in the following function.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetRejectFriendsResponseDelegate(AccelByte::Api::Lobby::FRejectFriendsResponse::CreateLambda([](const FAccelByteModelsRejectFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if RejectFriendsResponseDelegate succeeds
} else {
// Do something if RejectFriendsResponseDelegate fails
}
}));

FString UserId = FString("SomeTargetRejectFriendUserId");
FRegistry::Lobby.RejectFriend(UserId);

Unfriend players

To unfriend another player, use this function:

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetUnfriendResponseDelegate(AccelByte::Api::Lobby::FUnfriendResponse::CreateLambda([](const FAccelByteModelsUnfriendResponse & Result) {
if (Result.Code == "0") {
// Do something if UnfriendResponseDelegate succeeds
} else {
// Do something if UnfriendResponseDelegate fails
}
}));

FString UserId = FString("SomeTargetFriendUserId");
FRegistry::Lobby.Unfriend(UserId);

Retrieve the list of outgoing friend requests

To retrieve a list of outgoing friend requests, use this function:

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetListOutgoingFriendsResponseDelegate(AccelByte::Api::Lobby::FListOutgoingFriendsResponse::CreateLambda([](const FAccelByteModelsListOutgoingFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if ListOutgoingFriendsResponseDelegate fails
} else {
// Do something if ListOutgoingFriendsResponseDelegate succeeds
}
}));

FRegistry::Lobby.ListOutgoingFriends();

Cancel outgoing Friend requests

You can cancel outgoing friend requests using User ID. To get the user ID, you need to retrieve a list of outgoing friend requests, copy the User ID, and store it somewhere safe for the following function.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetCancelFriendsResponseDelegate(AccelByte::Api::Lobby::FCancelFriendsResponse::CreateLambda([](const FAccelByteModelsCancelFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if CancelFriendsResponseDelegate succeeds
} else {
// Do something if CancelFriendsResponseDelegate fails
}
}));

FString UserId = FString("SomeTargetCancelFriendUserId");
FRegistry::Lobby.CancelFriendRequest(UserId);

Listening for Friend notifications

Based on the different friend interactions players take, they will receive notifications from the Lobby service to inform them of a pending action. You will need to register delegates to listen for each of these notifications:

  • You have received friend request from another player
  • A player has accepted your friend request
  • A player has rejected your friend request
  • A player has canceled their pending friend request they sent you
  • A friend has unfriended you

Incoming Friend notifications

Register to listen for a notification when you receive an incoming friend request.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetOnIncomingRequestFriendsNotifDelegate(AccelByte::Api::Lobby::FRequestFriendsNotif::CreateLambda([](const FAccelByteModelsRequestFriendsNotif & Result) {
// Do something if OnIncomingRequestFriendsNotifDelegate succeeds
}));

Accepted Friend request notification

Register to listen for a notification when your friend accepts your friend request.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetOnFriendRequestAcceptedNotifDelegate(AccelByte::Api::Lobby::FAcceptFriendsNotif::CreateLambda([](const FAccelByteModelsAcceptFriendsNotif & Result) {
// Do something if OnFriendRequestAcceptedNotifDelegate succeeds
}));

Rejected Friend request notification

Register to listen for a notification when a player rejects your friend request.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetOnRejectFriendsNotifDelegate(AccelByte::Api::Lobby::FRejectFriendsNotif::CreateLambda([](const FAccelByteModelsRejectFriendsNotif & Result) {
// Do something if OnRejectFriendsNotifDelegate succeeds
}));

Canceled outgoing Friend request notification

Register to listen for a notification when another player cancels their friend request.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetOnCancelFriendsNotifDelegate(AccelByte::Api::Lobby::FCancelFriendsNotif::CreateLambda([](const FAccelByteModelsCancelFriendsNotif & Result) {
// Do something if OnCancelFriendsNotifDelegate succeeds
}));

Unfriend notification

Register to listen for a notification when a player unfriends another player.

FRegistry::Lobby.SetOnUnfriendNotifDelegate(AccelByte::Api::Lobby::FUnfriendNotif::CreateLambda([](const FAccelByteModelsUnfriendNotif & Result) {
// Do something if OnUnfriendNotifDelegate succeeds
}));