グループメンバーの管理
機能説明
グループメンバー管理は、グループメンバーに対して実施するリスト取得、発言禁止、強制退会、権限付与、グループマスターの権限譲渡などの操作を指します。関連のメソッドは中核クラス
TencentImSDKPlugin.v2TIMManager.getGroupManager()
に存在します。グループメンバーリストの取得
getGroupMemberList
(詳細はこちら)インターフェースを呼び出して指定したグループのグループメンバーを取得できます。このリストには各グループメンバーのプロフィール情報、例えば、ユーザID(userID
)、グループ名刺(nameCard
)、プロファイルフォト(faceUrl
)、ニックネーム(nickName
)、グループ参加時間(joinTime
)などの情報が含まれています。1つのグループには非常に多くのグループメンバー(5000+など)が存在する可能性があるため、グループメンバーリストを取得するインターフェースでは、フィルター(
filter
)とページごとの取得(nextSeq
)これらの2つの高度な特徴がサポートされています。フィルター(filter)
フィルター | フィルタータイプ |
GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ALL | すべてのグループメンバーの情報リストを取得する |
GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_OWNER | グループマスターの情報リストだけを取得する |
GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN | グループ管理者の情報リストだけを取得する |
GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_COMMON | 一般グループメンバーの情報リストだけを取得する |
サンプルコードは以下の通りです:
// filterパラメータでグループマスターの情報だけを取得することを設定するgroupManager.getGroupMemberList(count: 10,filter: GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN,nextSeq: '0',offset: 0,groupID: "",);
ページごとの取得(nextSeq)
ほとんどの場合、UIにすべてのグループメンバーの情報を表示する必要がなく、グループメンバーリストの最初のページだけを表示すればよいです。ユーザが「次のページへ」をクリックするかリストページを上にスワップして更新する時のみ、より多くのグループメンバーを取得する必要があります。このようなシーンでは、ページごとの取得を使用してください。
ページごとの取得の使用手順は以下の通りです:
1. 初めて
getGroupMemberList
を呼び出す時、パラメータnextSeq
に0(セッションリストを最初から取得することを意味する)を指定し、1回で最大50グループメンバーを取得するように設定します。2. 初めてグループメンバーリストを正常に取得した場合、
getGroupMemberList
のコールバックV2TIMGroupMemberInfoResult
の実行結果にnextSeq
(次回ページごとに取得するフィールド)が含まれます:nextSeq
が0の場合、すべてのグループメンバーが取得されました。nextSeq
が0より大きい場合、グループメンバーを依然として取得できます。この場合、ただちに「次のページ」のメンバーリストを取得する必要があるとは限りません。よく使用された通信ソフトウェアでは、ページごとの取得は通常ユーザのスワップ操作によって行われます。ユーザが上にスワップすると、1ページのメンバーリストが取得されます。3. ユーザが引き続きグループメンバーリストを上にスワップする時、取得可能なグループメンバーが存在すれば、
getGroupMemberList
インターフェースを呼び出し、新しいnextSeq
パラメータを渡します(nextSeq
の値は前回の取得処理で返されたV2TIMGroupMemberInfoResult
オブジェクトから取得する)。4.
nextSeq
が0になるまで「ステップ3」を繰り返し、取得を終了します。サンプルコードは以下の通りです:
// filterパラメータでグループマスターのプロフィールだけを取得することを設定するgroupManager.getGroupMemberList(count: 10,filter: GroupMemberFilterTypeEnum.V2TIM_GROUP_MEMBER_FILTER_ADMIN,nextSeq: '0',offset: 0,groupID: "",);
発言禁止
指定したグループメンバーに対する発言禁止
グループのマスターまたは管理者は
muteGroupMember
(詳細はこちら)を呼び出し、指定したグループメンバーに対して発言禁止と発言禁止時間を設定できます。発言禁止時間は秒単位で指定します。発言禁止の情報はグループメンバーのmuteUtil
フィールドに保存されます。グループ全体の発言禁止
グループのマスターまたは管理者は
setGroupInfo
(詳細はこちら)インターフェースを呼び出し、グループ全体に対して発言禁止を設定できます。具体的には、allMuted
フィールドにtrue
を設定します。グループ全体の発言禁止には時間上の制限がありません。グループプロフィールsetAllMuted(false)
で発言禁止を解除できます。説明:
グループ全体に対して発言禁止を設定すると、
onGroupInfoChanged
(詳細はこちら)コールバックが実行されます。この機能はデフォルトでは無効になっており、コンソールで手動で有効にすることができます。サンプルコードは以下の通りです。
// グループメンバーuserBを10分間発言禁止するgroupManager.muteGroupMember(groupID: '',userID: 'userB',seconds: 10);// 全員発言禁止groupManager.setGroupInfo(info: V2TimGroupInfo(isAllMuted: true,groupID: '',groupType: 'Public'));TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberInfoChanged: (groupID, v2TIMGroupMemberChangeInfoList) {//グループメンバーの情報を変更する},onGroupInfoChanged: (groupID,info){// グループ情報を変更する}));
説明:
グループマスターだけが管理者を発言禁止できます
強制退会
ライブストリーミンググループ(AVChatRoom)にはグループ参加制限がないため、強制退会をサポートするインターフェースがありません。
muteGroupMember
(詳細はこちらを呼び出して指定したメンバーを発言禁止することで、メンバーを管理できます。発言禁止の実施方法については、発言禁止をご参照ください。説明:
グループマスターだけが管理者をグループから強制退会できます。
サンプルコードは以下の通りです:
groupManager.kickGroupMember(groupID: '',memberList: []);
管理者の設定
グループマスターは
setGroupMemberRole
(詳細はこちら)を呼び出し、知らない人とのソーシャルグループ(Public)と臨時ミーティンググループ(Meeting)のグループメンバーに管理者の権限を付与できます。一般グループメンバーは権限が付与されると、管理者と同じ権限を持ち、以下の操作を実施できるようになります:
グループの基本情報を変更する
一般グループメンバーをグループから強制退会する
一般グループメンバーを発言禁止する(一定時間発言できないこと)
グループ参加申請を処理する
サンプルコードは次のとおりです:
groupManager.setGroupMemberRole(groupID: '',userID: '',role: GroupMemberRoleTypeEnum.V2TIM_GROUP_MEMBER_ROLE_ADMIN);// 監視するロールを変更するTencentImSDKPlugin.v2TIMManager.addGroupListener(listener: V2TimGroupListener(onMemberInfoChanged: (groupID, v2TIMGroupMemberChangeInfoList) {},onGroupInfoChanged: (groupID,info){},onGrantAdministrator: (String groupID, V2TimGroupMemberInfo info, List<V2TimGroupMemberInfo> infolist){},onRevokeAdministrator: (String groupID, V2TimGroupMemberInfo info, List<V2TimGroupMemberInfo> infolist){},));
グループマスターの権限の譲渡
グループマスターの権限が譲渡されると、グループメンバー全員がonGroupInfoChangedコールバックを受信します。そのうち、
V2TIMGroupChangeInfo
のtypeは V2TIMGroupChangeInfo.V2TIM_GROUP_INFO_CHANGE_TYPE_OWNER
で、valueの値は新しいグループマスターのUserIDです。サンプルコードは以下の通りです:
groupManager.transferGroupOwner(groupID: "", userID: "userID");
オンライングループメンバー数を取得する
説明:
現在、ライブストリーミンググループ(AVChatRoom)だけでは、オンライングループメンバー数の取得がサポートされます。
SDK呼出しの頻度は最大60秒に1回です。
サンプルコードは以下の通りです:
groupManager.getGroupOnlineMemberCount(groupID: '');