メインコンテンツまでスキップ

フレンドサービスを Client SDK に統合する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

はじめに

フレンドサービスは、プレイヤー同士を接続し、チャット、プレゼンスステータスの確認、パーティーへの招待などのゲーム内のソーシャルアクティビティを実行できるようにするために使用できます。フレンドを管理するには、WebSocketを使用してリアルタイム更新を保証するロビーインターフェイスを使用します。

このサービスとの統合により、フレンドリクエストの管理、プレイヤーのフレンドリストの取得、サードパーティプラットフォームからのプレイヤーのフレンドの自動同期が可能になり、新しいフレンドリクエストを送信する必要がなくなります。ゲームクライアントは、他のプレイヤーがインタラクションをリクエストしているタイミングを知るために、ロビーサービスでフレンド通知をリッスンするように登録する必要があります。

注記

Unreal Engineの場合、スニペットで使用されるAccelByteOnlineSubsystemPtrを取得する手順は、このガイドに従ってください。

フレンドインタラクションの実装

プレイヤーを検索する

プレイヤーの表示名またはユーザー名をクエリとして使用して、プレイヤーのアカウント情報を検索できます。Unityの場合はSearchType、Unrealの場合はEAccelByteSearchTypeの列挙型をDisplayNameまたはUsernameに設定することで、検索のタイプを設定できます。

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

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto UserApi = ApiClient->GetUserApi().Pin();
UserApi->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);
}));

フレンドリストを取得する

次の関数を使用してフレンドリストを取得します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();
LobbyApi->Connect();
LobbyApi->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);
}));

LobbyApi->LoadFriendsList();

ユーザーIDを使用してフレンドリクエストを送信する

フレンドを作成する最初のステップは、他のプレイヤーにフレンドリクエストを送信することです。このコードを使用して、ユーザーIDを使用してフレンドリクエストを送信します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();
LobbyApi->Connect();
LobbyApi->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");
LobbyApi->RequestFriend(UserId);

受信フレンドリクエストのリストを取得する

この関数を使用して、受信フレンドリクエストに関するすべての情報を取得します。この関数は、各リクエストを承認または拒否するために使用できるユーザーIDを取得します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();
LobbyApi->Connect();
LobbyApi->SetListIncomingFriendsResponseDelegate(AccelByte::Api::Lobby::FListIncomingFriendsResponse::CreateLambda([](const FAccelByteModelsListIncomingFriendsResponse & Result) {
if (Result.Code == "0") {
// Do something if ListIncomingFriendsResponseDelegate succeeds
} else {
// Do something if ListIncomingFriendsResponseDelegate fails
}
}));

LobbyApi->ListIncomingFriends();

LobbyApi->LoadFriendsList();

受信フレンドリクエストを承認する

フレンドリクエストが送信された後、リクエストを受信したプレイヤーは、それを承認または拒否できます。フレンドリクエストを承認するには、この関数を使用します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

LobbyApi->Connect();
LobbyApi->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");
LobbyApi->AcceptFriend(UserId);

受信フレンドリクエストを拒否する

ユーザーIDで受信フレンドリクエストを拒否できます。ユーザーIDを取得するには、受信フレンドリクエストのリストを取得し、ユーザーIDをコピーして、次の関数で使用するために安全な場所に保存する必要があります。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

LobbyApi->Connect();
LobbyApi->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");
LobbyApi->RejectFriend(UserId);

プレイヤーのフレンド解除

他のプレイヤーとのフレンド関係を解除するには、この関数を使用します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

LobbyApi->Connect();
LobbyApi->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");
LobbyApi->Unfriend(UserId);

送信フレンドリクエストのリストを取得する

送信フレンドリクエストのリストを取得するには、この関数を使用します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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

LobbyApi->ListOutgoingFriends();

送信フレンドリクエストをキャンセルする

ユーザーIDを使用して送信フレンドリクエストをキャンセルできます。ユーザーIDを取得するには、送信フレンドリクエストのリストを取得し、ユーザーIDをコピーして、次の関数のために安全な場所に保存する必要があります。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

LobbyApi->Connect();
LobbyApi->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");
LobbyApi->CancelFriendRequest(UserId);

フレンド通知をリッスンする

プレイヤーが実行するさまざまなフレンドインタラクションに基づいて、保留中のアクションを通知するためにロビーサービスから通知を受け取ります。これらの通知のそれぞれをリッスンするためにデリゲートを登録する必要があります。

  • 他のプレイヤーからフレンドリクエストを受信した
  • プレイヤーがあなたのフレンドリクエストを承認した
  • プレイヤーがあなたのフレンドリクエストを拒否した
  • プレイヤーがあなたに送信した保留中のフレンドリクエストをキャンセルした
  • フレンドがあなたとのフレンド関係を解除した

受信フレンド通知

受信フレンドリクエストを受信したときの通知をリッスンするように登録します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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

承認されたフレンドリクエスト通知

フレンドがあなたのフレンドリクエストを承認したときの通知をリッスンするように登録します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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

拒否されたフレンドリクエスト通知

プレイヤーがあなたのフレンドリクエストを拒否したときの通知をリッスンするように登録します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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

キャンセルされた送信フレンドリクエスト通知

他のプレイヤーがフレンドリクエストをキャンセルしたときの通知をリッスンするように登録します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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

フレンド解除通知

プレイヤーが他のプレイヤーとのフレンド関係を解除したときの通知をリッスンするように登録します。

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();

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