Skip to main content

Use the SDK for friend requests - Add friends - (Unity module)

Last updated on June 10, 2024

What's in the Starter Pack

This tutorial shows you how to implement the handling friend requests using the AccelByte Gaming Services (AGS) Game SDK.

Already defined are event actions that will be used later by the user interface (UI) script handler:

public static event Action OnRejected;
public static event Action OnIncomingAdded;
public static event Action OnAccepted;

Implement getting received friend requests

  1. Open FriendsEssentialsWrapper_Starter.cs and create a function called LoadIncomingFriendRequests. This function will retrieve all incoming friend requests.

    public void LoadIncomingFriendRequests(ResultCallback<Friends> resultCallback)
    {
    _lobby.ListIncomingFriends(result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Success to load incoming friend request");
    }
    else
    {
    Debug.LogWarning($"Error ListIncomingFriends, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
    }
    resultCallback?.Invoke(result);
    });
    }
  2. To reject a friend request, you need to create a function called DeclineFriend that will be used later from the UI script handler.

    public void DeclineFriend(string userID, ResultCallback resultCallback)
    {
    _lobby.RejectFriend(userID, result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"success to reject friend request {!result.IsError}");
    }
    else
    {
    Debug.LogWarning($"{result.Error.Message}");
    }

    resultCallback?.Invoke(result);

    });
    }
  3. Create a function to accept incoming friend requests called AcceptFriend.

    public void AcceptFriend(string userID, ResultCallback resultCallback)
    {
    _lobby.AcceptFriend(userID, result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Success to accept friend {userID}");
    }
    else
    {
    Debug.LogWarning($"{result.Error.Message}");
    }

    resultCallback?.Invoke(result);
    });
    }

Implement getting sent friend requests

  1. Open FriendsEssentialsWrapper_Starter.cs and create a new function called LoadOutgoingFriendRequests to query all outgoing friend requests.

    public void LoadOutgoingFriendRequests(ResultCallback<Friends> resultCallback = null)
    {
    _lobby.ListOutgoingFriends(result => {
    if (!result.IsError)
    {
    Debug.Log($"Success to load outgoing friend request");
    }
    else
    {
    Debug.LogWarning($"Error ListOutgoingFriends, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
    }
    resultCallback?.Invoke(result);
    });
    }
  2. Define a function to cancel outgoing friend requests.

    public void CancelFriendRequests(string userID, ResultCallback resultCallback)
    {
    _lobby.CancelFriendRequest(userID, result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Success to accept friend {userID}");
    }
    else
    {
    Debug.LogWarning($"{result.Error.Message}");
    }

    resultCallback?.Invoke(result);
    });
    }

Implement getting friend details

Already defined are the LoadIncomingFriendRequests and LoadOutgoingFriendRequests functions that query the friend request list. The return value of these functions is a list of friend user IDs. However, to obtain user information, you need to call another SDK function by creating a function with the following code:

public void GetBulkUserInfo(string[] usersId, ResultCallback<ListBulkUserInfoResponse> resultCallback)
{
_user.BulkGetUserInfo(usersId, result =>
{
if (!result.IsError)
{
Debug.Log($"success to retrieve bulk user info {!result.IsError}");
resultCallback?.Invoke(result);
}
else
{
Debug.LogWarning($"{result.Error.Message}");
}
});
}

Listen for friend list updating

When players accept, reject, or cancel friend requests, you need to update the incoming or outgoing friend request lists. To achieve this, you will use the notification events provided by the AGS Game SDK. In this section, you will listen for the OnIncomingFriendRequest, FriendRequestRejected, and FriendRequestAccepted event notifications. These events are made available by the AGS Game SDK for handling friend request interactions.

  1. Open FriendsEssentialsWrapper_Starter.cs and create a function to listen for new incoming friend requests. This function will invoke the OnIncomingAdded event action, which will be used later in the user interface (UI) script handler.

    public void ListenIncomingFriendRequest()
    {
    _lobby.OnIncomingFriendRequest += result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Successfully listened for incoming friend request");
    OnIncomingAdded?.Invoke();
    }
    else
    {
    Debug.LogWarning($"{result.Error.Message}");
    }
    };
    }
  2. Create a function called ListenRejectedRequest() that will be triggered whenever one of your sent friend requests is rejected by another player. This function will invoke the OnRejected event action, which will be used later in the UI script handler.

    public void ListenRejectedRequest()
    {
    _lobby.FriendRequestRejected += result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Successfully listened for outgoing friend request rejection");
    OnRejected?.Invoke();
    }
    else
    {
    Debug.LogWarning($"Error OnUnfriend, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
    }
    };
    }
  3. Create a function to listen when the outgoing friend request is accepted. This function will invoke the OnRejected event action, which will be used later in the UI script handler.

    public void ListenAcceptedRequest()
    {
    _lobby.FriendRequestAccepted += result =>
    {
    if (!result.IsError)
    {
    Debug.Log($"Successfully listened for outgoing friend request acceptance");
    OnAccepted?.Invoke();
    }
    else
    {
    Debug.LogWarning($"Error OnUnfriend, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
    }
    };
    }
  4. You now have all the necessary functionalities to update the friend request list. To listen to these events, add the following highlighted code to the Start() function:

    void Start()
    {
    _user = MultiRegistry.GetApiClient().GetUser();
    _lobby = MultiRegistry.GetApiClient().GetLobby();
    LoginHandler.onLoginCompleted += tokenData =>
    {
    Debug.LogWarning(tokenData.user_id);
    PlayerUserId = tokenData.user_id;
    };
    LoginHandler.onLoginCompleted += tokenData => LoginToLobby();
    LoginHandler.onLoginCompleted += tokenData => ListenIncomingFriendRequest();
    LoginHandler.onLoginCompleted += tokenData => ListenRejectedRequest();
    LoginHandler.onLoginCompleted += tokenData => ListenAcceptedRequest();
    }

Resources