友達管理

機能説明

IM SDKは友達の管理をサポートしています。これにより、ユーザーは自主的的に友達の追加と削除を行うことができるほか、友達にのみメッセージを送信できるように設定することもできます。

友達リストの取得

IM SDKがフレンドシップチェーンのロジックをサポートしています。getFriendList(クリックして詳細を表示)を呼び出すことで、友達リストを取得できます。
サンプルコードは次のとおりです:
// 友達リストを取得する
V2TimValueCallback<List<V2TimFriendInfo>> friendsList = await friendshipManager.getFriendList();

友達の追加

addFriend(クリックして詳細を表示)インターフェースを呼び出すことで、友達を追加できます。
サンプルコードは次のとおりです:
// お互いに友達として追加する
V2TimValueCallback<V2TimFriendOperationResult> addFriend = await friendshipManager.addFriend(userID: "userID",remark:"友達追加時の注釈",addWording:"備考",addType:FriendTypeEnum.V2TIM_FRIEND_TYPE_BOTH);
相手のユーザー情報における、友達追加の設定状況(承認が必要かどうか)に応じて、処理方法が2つ分けられます。

状況1:友達を追加するときに相手による承認は不要です

1. ユーザーAとBはsetFriendListenerを呼び出してリレーションシップチェーンのリスナーを設定します。
2. ユーザーBはsetSelfInfo関数のallowType(クリックして詳細を表示)フィールドで、友達追加時に承認が不要である(V2TIM_FRIEND_ALLOW_ANY)ように設定します。
3. ユーザーAがaddFriendを呼び出してBを友達として追加することを申請すると、追加が完了です。追加完了後、申請パラメータV2TIMFriendAddApplicationaddTypeの設定によって、次の2つの状況があります:
相互的な友達(V2TIM_FRIEND_TYPE_BOTH)として設定されている場合、ユーザーAとBの両方はonFriendListAdded(クリックして詳細を表示)コールバックを受信します。
一方的な友達(V2TIM_FRIEND_TYPE_SINGLE)に設定されている場合、ユーザーAのみがonFriendListAddedコールバックを受信します。

状況2:友達を追加するときに相手による承認が必要です

1. ユーザーAとBはsetFriendListenerを呼び出してリレーションシップチェーンの監視を設定します。
2. ユーザーBはsetSelfInfo関数のallowTypeフィールドで、友達追加時に承認が必要である(V2TIM_FRIEND_NEED_CONFIRM)ように設定します。
3. ユーザーAがaddFriendを呼び出してBを友達として追加することを申請した後、インターフェースで正常にコールバックしたパラメータでは、resultCodeが30539を返した場合は、ユーザーBの承認を待つ必要があることを示します。同時に、AとBの両方がonFriendApplicationListAdded(クリックして詳細を表示)のコールバックを受信します。
4. ユーザーBがonFriendApplicationListAddedのコールバックを受信します。パラメータV2TIMFriendApplicationtypeV2TIM_FRIEND_APPLICATION_COME_INの場合、受け入れるか拒否するかを選択できます。
BはacceptFriendApplication(クリックして詳細を表示)を呼び出して、友達リクエストを受け入れます。パラメータの受け入れタイプが「一方的な友達追加のみを許可」(V2TIM_FRIEND_ACCEPT_AGREE)である場合:
AがonFriendListAddedコールバックを受信する場合は、一方的な友達追加に成功したことを示します。
BがonFriendApplicationListDeleted(クリックして詳細を表示)コールバックを受信します。このとき、BはAの友達になりますが、AはまだBの友達ではありません。
BがacceptFriendApplicationを呼び出して友達リクエストを受け入れます。パラメータの受け入れタイプが「相互的な友達追加を許可」(V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD)である場合、AとBの両方がonFriendListAddedコールバックを受信すると、お互いの友達登録に成功しました。
BがrefuseFriendApplication(クリックして詳細を表示)を呼び出して友達リクエストを拒否した場合、両方のユーザーがonFriendApplicationListDeletedコールバックを受信します。

友達の削除

deleteFromFriendList(クリックして詳細を表示)インターフェースを呼び出すことで、友達関係を削除できます。
サンプルコードは次のとおりです:
// 相互的な友達を削除する
V2TimValueCallback<List<V2TimFriendOperationResult>> deleteres = await friendshipManager.deleteFromFriendList(deleteType: FriendTypeEnum.V2TIM_FRIEND_TYPE_BOTH,userIDList:['user1']);

友達関係の確認

checkFriend(クリックして詳細を表示)インターフェースを呼び出すことで、友達関係を確認できます。
サンプルコードは次のとおりです。
// 友達と相互的(一方的)なの友達関係を持っているかどうかを検出します。
V2TimValueCallback<List<V2TimFriendCheckResult>> checkres = await friendshipManager.checkFriend(checkType:FriendTypeEnum.V2TIM_FRIEND_TYPE_BOTH,userIDList: [] );

友達へのメッセージ送信のみを許可するように設定

IM SDKが個人チャットメッセージを送信するときに、デフォルトで友達関係を確認しません。カスタマーサービスのシナリオでは、ユーザーがコミュニケーションする前に、先にカスタマーサービスの担当者を友達として追加しなければならないことは、非常に不便です。そのため、このデフォルト設定は、オンラインカスタマーサービスなどのシナリオでよく使用されます。 先に友達を追加し、後でメッセージを送信するというインタラクション体験を実現するには、IMコンソール >【機能設定】>【ログインとメッセージ】>【友達関係の確認】で「個人チャットメッセージを送信してリレーションシップチェーンを確認」を有効にします。有効にすると、ユーザーは友達にのみメッセージを送信でき、ユーザーが友達以外のユーザーにメッセージを送信すると、SDKは20009エラーコードを報告します。