Friends Interface

フレンド リストの取得、他のユーザーの追加や削除を行うためのインターフェースです。

7 分で読めます

友達とゲームをしたり、オンラインで新しいプレイヤーに会ったりすることは、多くのオンラインサービスの重要な部分です。Epic Online Services (EOS) SDK では、「Friends (フレンド) インターフェース」 を使用してログイン ユーザーのフレンド リストを取得します。

フレンド リストはオンライン サービスのサーバーによって格納され、フレンドが追加または削除されたり、フレンドがゲームで自分の情報が使用されることを許可したり、その許可を取り消したりすると、セッション中に変更されます。

フレンド リストのクエリが正常に完了すると、フレンド インターフェースではローカル キャッシュを作成します。このローカル キャッシュは他のすべてのフレンド インターフェース関数で使用されます。さらに、この SDK では、フレンドの削除、招待の受け入れ、ゲームで自分の情報が使用されることに対する許可をフレンドが取り消すなど、フレンド リストに変更が生じるイベントに関する通知をバックエンドから受信します。

フレンド インターフェースを使用するには、お使いの製品で Epic アカウント サービス (EAS) が有効になっており、フレンド リスト のデータにアクセスするための ユーザーからの許可 を得る必要があります。EAS は Developer Portal 上で有効にすることができます。詳細は「Epic のドキュメント」を参照してください。

フレンド リストを取得してキャッシュする

ユーザーのフレンド リストを取得するには、EOS_HFriends ハンドルが必要です。このハンドルは、Platform (プラットフォーム) インターフェース の関数である EOS_Platform_GetFriendsInterface を使用して取得することができます。このハンドルは、フレンド インターフェースの関数がログイン ユーザーのフレンド リストにアクセスするために必要です。Friends Interface 関数は、ログインしているユーザーのフレンドリストにアクセスするために、このハンドルを必要とします。EOS_Friends_QueryFriends は、少なくとも一度はゲームをプレイし、同意を得たフレンドのみを返すことに注意してください。同意は、プレイヤーが Epic Account Services(EAS) を使用してアプリケーションにログインし、EAS が彼らのアカウント データにアクセスすることを許可したときに与えられます。

ユーザーのフレンド リストを処理する最初のステップは、EOS_Friends_QueryFriendsOptions データ構造体を指定して EOS_Friends_QueryFriends を呼び出すことです。この呼び出しにより、最新バージョンのユーザーのフレンド リストをローカル キャッシュにダウンロードされます。完了時には、EOS_Friends_QueryFriends コールバック関数を呼び出します。

EOS_Friends_QueryFriends 呼び出しを実行するには、次のように EOS_Friends_QueryFriendsOptions 構造体を作成して初期化します。

プロパティ
ApiVersionEOS_FRIENDS_QUERYFRIENDS_API_LATEST
LocalUserIdフレンド リストを取得する対象のログイン ユーザーの EOS_EpicAccountId

フレンド インターフェース ハンドル、EOS_Friends_QueryFriendsOptions 構造体、およびコールバック情報を関数に渡します。EOS_HPlatform ハンドルがティックしている場合、操作が終了すると、指定したコールバックが実行されます。

コールバックが実行されたら、EOS_Friends_QueryFriendsCallbackInfo 構造体の ResultCode フィールドを確認すると、操作が成功したか、失敗したかを判断できます。成功コードは、SDK によってサーバーから最新のデータがキャッシュされ、いつでもデータを調査できることを示します。

フレンド リストを調べる

EOS_Friends_QueryFriends の呼び出しに成功したら、デベロッパーはローカル キャッシュを使用して次の便利な関数を実行できます。

  • EOS_Friends_GetFriendsCount を呼び出してリストのフレンドの人数を特定する。
  • EOS_Friends_GetFriendAtIndex を呼び出して各フレンドの EOS_EpicAccountId を取得する。

この関数によって返された EOS_EpicAccountIdUser Info Interface に渡すことで、ユーザーに関する追加情報を取得できます。

  • EOS_Friends_GetStatus を呼び出してソーシャル リレーションシップの現在のステータスを特定する。この関数は次の 4 ついずれかの値を返します。
説明
EOS_FS_NotFriendsユーザーがフレンドではない。
EOS_FS_InviteSentローカル ユーザーが他のユーザーにフレンド招待を送信した。
EOS_FS_InviteReceived他のユーザーがローカル ユーザーにフレンド招待を送信した。
EOS_FS_Friendsユーザーがフレンドである。

フレンド リストは、新しいプレイヤーとの出会いなどのゲーム内イベント、およびユーザーが別のシステムからアカウントを変更するなどのゲーム外イベントの両方から、いつでも変更が可能です。ゲームでは、プレイヤーがログインするたびに何度も EOS_Friends_QueryFriends を呼び出す必要はありません。ただし、プレイヤーがログアウトしてから再ログインした場合は、そのフレンド リストをもう一度クエリする必要があります。フレンド リストのゲームのローカル コピーを最新の状態に維持するには、フレンド ステータスの更新通知をサブスクライブします。

フレンド ステータスの更新をサブスクライブする

フレンドのステータスが変更されたときに通知を受け取るには、次のパラメータを指定して EOS_Friends_AddNotifyFriendsUpdate を呼び出します。

パラメータ説明
OptionsEOS_Friends_AddNotifyFriendsUpdateOptions 構造体。唯一のパラメータとして ApiVersion を含みます。
CallbackEOS_Friends_OnFriendsUpdateCallback に一致する有効なコールバック関数。

このコールバック関数はフレンドが更新を取得すると呼び出されます。このコールバックは次のパラメータを含む EOS_Friends_OnFriendsUpdateInfo 構造体を受け取ります。

パラメータ説明
LocalUserIdフレンドに関する更新を受け取るローカル ユーザーの EOS_EpicAccountId
TargetUserIdステータスが更新されるユーザーの EOS_EpicAccountId
PreviousStatusターゲット ユーザーのステータスの更新前の値。
CurrentStatusターゲット ユーザーのステータスの更新後の値。

EOS_Friends_AddNotifyFriendsUpdateEOS_NotificationId を返します。これは、通知が不要になったら、通知のサブスクライブの解除に使用する必要のある専用のハンドルです。失敗した場合、この関数は、結果コード EOS_INVALID_NOTIFICATIONID を返します。

フレンド ステータスの更新のサブスクライブを解除するには、関数 EOS_Friends_RemoveNotifyFriendsUpdate を使用します。この関数では、サブスクリプション中に受け取った通知 ID を受け入れます。

フレンド リストを管理する

このセクションで説明されているフレンドリスト管理 API は、現在 Windows PC 上のゲームでのみ使用できます。

Nintendo Switch、PlayStation、Xbox コンソール プラットフォームのサポートが計画されています。 macOS、Linux、Android、iOS のさsポートが計画されています。

EOS_Friends_SendInvite SDK API の呼び出しにより、ローカル ユーザーはゲーム内の他のユーザーにフレンド リクエストを送信できるようにすることができます。受信したフレンドの招待を承認または拒否するゲーム UI 機能を実装するには、EOS_Friends_AcceptInviteEOS_Friends_RejectInvite のSDK API をそれぞれに使用することができます。

これらの API は、まだ利用できないプラットフォームでは EOS_NotImplemented を返します。