V2TIMPermissionGroupInfo
包含三要素:社群权限 groupPermission
、话题权限 topicPermission
、拥有该权限的群成员。如上图所示,不同的权限组可以配置不同的社群权限 groupPermission
和话题权限 topicPermission
,并通过添加不同的群成员来实现差异化权限管理。在社群资料 V2TIMGroupInfo
和话题资料 V2TIMTopicInfo
中还可分别设置社群的默认权限和话题的默认权限 defaultPermissions
,并且所有群成员都拥有该默认权限。权限组管理规则如下:enablePermissionGroup
为 true
,此时 管理员 的能力就失效了,相当于普通群成员;相反设置为 false后,权限组管理功能失效,恢复 管理员 的能力。V2TIMGroupInfo
和话题资料 V2TIMTopicInfo
中会自动创建默认的社群权限 defaultPermissions 和话题权限 defaultPermissions,针对所有群成员 everyone 生效(群主除外)。V2TIMPermissionGroupInfo
中的社群权限 groupPermission
可以在 创建权限组 时设置,也可以后续再修改。权限组中的话题权限 topicPermission
需要通过接口 addTopicPermissionToPermissionGroup 添加到权限组中。权限组的社群权限和话题权限只对权限组中的成员有效。分类 | 第 几 位 | 名称 | 含义 |
社群权限 | 第 0 位 | V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO | 修改群资料权限 |
| 第 1 位 | V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER | 群成员管理权限,包含踢人,进群审核、修改成员资料等 |
| 第 2 位 | V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO | 管理权限组资料权限 |
| 第 3 位 | V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER | 权限组成员管理权限 |
| 第 4 位 | V2TIM_COMMUNITY_PERMISSION_MANAGE_TOPIC_IN_COMMUNITY | 话题管理权限,包含创建、修改、删除话题等 |
| 第 5 位 | V2TIM_COMMUNITY_PERMISSION_MUTE_MEMBER | 对某群成员在社群下所有话题的禁言权限 |
| 第 6 位 | V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE | 群成员在社群下所有话题的发消息权限 |
| 第 7 位 | V2TIM_COMMUNITY_PERMISSION_AT_ALL | 在社群下所有话题发 at all 消息权限 |
| 第 8 位 | V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE | 在社群下所有话题拉取入群前的历史消息权限 |
| 第 9 位 | V2TIM_COMMUNITY_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE | 在社群下所有话题撤回他人消息权限 |
| 第 10 位 | V2TIM_COMMUNITY_PERMISSION_BAN_MEMBER | 封禁社群成员权限 |
话题权限 | 第 0 位 | V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | 管理当前话题的权限,包括修改当前话题的资料、删除当前话题 |
| 第 1 位 | V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC_PERMISSION | 在当前话题中管理话题权限,包括添加、修改、移除话题权限 |
| 第 2 位 | V2TIM_TOPIC_PERMISSION_MUTE_MEMBER | 在当前话题中禁言成员权限 |
| 第 3 位 | V2TIM_TOPIC_PERMISSION_SEND_MESSAGE | 在当前话题中发消息权限 |
| 第 4 位 | V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE | 在当前话题中拉取入群前的历史消息权限 |
| 第 5 位 | V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE | 在当前话题中撤回他人消息权限 |
| 第 6 位 | V2TIM_TOPIC_PERMISSION_AT_ALL | 在当前话题中发消息时有 at all 权限 |
enablePermissionGroup
为 true
,也可以放到最后一步操作。defaultPermissions
设置为 0,所有成员都没有社群维度的任何权限。defaultPermissions
设置为 16(二进制的 10000)即V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE
,把【篮球】、【足球】话题的 everyone 权限defaultPermissions
设置为 8(二进制的 1000)即 V2TIM_TOPIC_PERMISSION_SEND_MESSAGE
,所有成员都可以【重要通知】话题中拉取加入社群前的历史消息,在【篮球】、【足球】话题中发消息。groupPermission
为 3(二进制值 11),即权限“或”运算的值V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO | V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER
,并添加【重要通知】话题的发消息权限 topicPermission
为 8(二进制的 1000)V2TIM_TOPIC_PERMISSION_SEND_MESSAGE
,群成员 a 被添加到该权限组后就拥有了修改社群资料、管理群成员、在【重要通知】话题中发送消息的权限。groupPermission
为 0,并添加【篮球】、【足球】话题禁言成员的权限 topicPermission
为 4(二进制的 100)V2TIM_TOPIC_PERMISSION_MUTE_MEMBER
,群成员 b 和群成员 c 被 添加到该权限组 后就拥有了在【篮球】、【足球】话题禁言成员的权限。V2TIMGroupInfo groupInfo = new V2TIMGroupInfo();groupInfo.setGroupID("需要开启权限组功能的社群 ID");groupInfo.setEnablePermissionGroup(true);V2TIMManager.getGroupManager().setGroupInfo(groupInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// 开启权限组功能成功}@Overridepublic void onError(intcode, String desc) {// 开启权限组功能失败}});// 群事件监听V2TIMManager.getInstance().addGroupListener(new V2TIMGroupListener() {@Overridepublic void onGroupInfoChanged(String groupID, List<V2TIMGroupChangeInfo> changeInfos) {// 群资料更新回调}});
V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"需要开启权限组功能的社群 ID";info.enablePermissionGroup = YES;[[V2TIMManager sharedInstance] setGroupInfo:info succ:^{// 开启权限组功能成功} fail:^(int code, NSString *msg) {// 开启权限组功能失败}];// 群事件监听[[V2TIMManager sharedInstance] addGroupListener:self];- (void)onGroupInfoChanged:(NSString *)groupID changeInfoList:(NSArray<V2TIMGroupChangeInfo *>*)changeInfoList {// 群资料更新回调}
V2TIMGroupInfo info;info.groupID = "需要开启权限组功能的社群 ID";info.enablePermissionGroup = true;info.modifyFlag |= (uint32_t)V2TIM_GROUP_INFO_MODIFY_FLAG_ENABLE_PERMISSION_GROUP;class TestCallBack : public V2TIMValueCallback<V2TIMString> {void OnSuccess(const V2TIMString &value) override {// 开启权限组功能成功}void OnError(int error_code, const V2TIMString &error_message) override {// 开启权限组功能失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetGroupManager()->SetGroupInfo(info, callback);// 群事件监听class GroupListener final : public V2TIMGroupListener {public:GroupListener() = default;~GroupListener() override = default;void OnGroupInfoChanged(const V2TIMString &groupID, const V2TIMGroupChangeInfoVector &changeInfos)override {// 群资料更新通知}};GroupListener groupListener;V2TIMManager::GetInstance()->AddGroupListener(&groupListener);
V2TIMGroupInfo
中的 defaultPermissions
(Android / iOS & Mac / Windows) 修改社群的默认权限,默认权限对所有群成员 everyone 生效(群主除外)。// 假如需求是设置所有群成员默认在所有话题下可以发消息以及可以拉取加入社群前的历史消息,其他权限关闭long communityPermission = V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE | V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE;V2TIMGroupInfo groupInfo = new V2TIMGroupInfo();groupInfo.setGroupID("需要修改的社群 ID");groupInfo.setDefaultPermissions(communityPermission);V2TIMManager.getGroupManager().setGroupInfo(groupInfo, new V2TIMCallback() {@Override public voidonSuccess() {// 设置默认权限成功}@Override public void onError(int code, String desc) {// 设置默认权限失败}});// 群组资料修改通知V2TIMManager.getInstance().addGroupListener(new V2TIMGroupListener() {@Overridepublic void onGroupInfoChanged(String groupID, List<V2TIMGroupChangeInfo> changeInfos) {// 群资料更新回调}});
// 假如需求是设置所有群成员默认在所有话题下可以发消息以及可以拉取加入社群前的历史消息,其他权限关闭V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];info.groupID = @"需要修改的社群 ID";info.defaultPermissions = V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE |V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE;[[V2TIMManager sharedInstance] setGroupInfo:info succ:^{// 设置默认权限成功} fail:^(int code, NSString *msg) {// 设置默认权限失败}];// 群事件监听[[V2TIMManager sharedInstance] addGroupListener:self];- (void)onGroupInfoChanged:(NSString *)groupID changeInfoList:(NSArray<V2TIMGroupChangeInfo *>*)changeInfoList {// 群资料更新回调}
// 假如需求是设置所有群成员默认在所有话题下可以发消息以及可以拉取加入社群前的历史消息,其他权限关闭V2TIMGroupInfo info;info.groupID = "需要修改的社群 ID";info.modifyFlag |= (uint32_t)V2TIM_GROUP_INFO_MODIFY_FLAG_DEFAULT_PERMISSIONS;info.defaultPermissions = V2TIM_COMMUNITY_PERMISSION_SEND_MESSAGE | V2TIM_COMMUNITY_PERMISSION_GET_HISTORY_MESSAGE;class TestCallBack : public V2TIMValueCallback<V2TIMString> {void OnSuccess(const V2TIMString &value) override {// 设置默认权限成功}void OnError(int error_code, const V2TIMString &error_message) override {// 设置默认权限失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetGroupManager()->SetGroupInfo(info, callback);// 群事件监听class GroupListener final : public V2TIMGroupListener {public:GroupListener() = default;~GroupListener() override = default;void OnGroupInfoChanged(const V2TIMString &groupID, const V2TIMGroupChangeInfoVector &changeInfos)override {// 群资料更新通知}};GroupListener groupListener;V2TIMManager::GetInstance()->AddGroupListener(&groupListener);
createPermissionGroupInCommunity
(Android / iOS & Mac / Windows) 创建权限组,默认最多创建 20 个权限组。V2TIMPermissionGroupInfo v2TIMPermissionGroupInfo = new V2TIMPermissionGroupInfo();v2TIMPermissionGroupInfo.setGroupID("需要创建权限组的社群 ID");v2TIMPermissionGroupInfo.setPermissionGroupID("权限组 ID,可不填或者自定义");v2TIMPermissionGroupInfo.setPermissionGroupName("权限组名称");v2TIMPermissionGroupInfo.setCustomData("权限组自定义字符串");// 该权限组的成员具有【修改群资料权限】和【群成员管理权限】long communityPermission = V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO | V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER;v2TIMPermissionGroupInfo.setGroupPermission(communityPermission);V2TIMManager.getCommunityManager().createPermissionGroupInCommunity(v2TIMPermissionGroupInfo, new V2TIMValueCallback<String>() {@Override public void onSuccess(String permissionGroupID) {// 创建权限组成功}@Override public void onError(int code, String desc) {// 创建权限组失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onCreatePermissionGroup(String groupID, V2TIMPermissionGroupInfo permissionGroupInfo) {// 权限组创建通知}});
V2TIMPermissionGroupInfo *permissionGroupInfo = [[V2TIMPermissionGroupInfo alloc] init];permissionGroupInfo.groupID = @"需要创建权限组的社群 ID";permissionGroupInfo.permissionGroupID = @"权限组 ID,可不填或者自定义";permissionGroupInfo.permissionGroupName = @"权限组名称";// 该权限组的成员具有【修改群资料权限】和【群成员管理权限】permissionGroupInfo.groupPermission = V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO |V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER;permissionGroupInfo.customData = @"权限组自定义字符串";[[V2TIMManager sharedInstance] createPermissionGroupInCommunity:permissionGroupInfo succ:^(NSString *permissionGroupID) {// 创建权限组成功} fail:^(int code, NSString *desc) {// 创建权限组失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onCreatePermissionGroup:(NSString *)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo {// 权限组创建通知}
V2TIMPermissionGroupInfo permissionGroupInfo; permissionGroupInfo.groupID = "需要创建权限组的社群 ID";permissionGroupInfo.permissionGroupID = "权限组 ID,可不填或者自定义";permissionGroupInfo.permissionGroupName = "权限组名称";permissionGroupInfo.customData = "权限组自定义字符串"; // 该权限组的成员具有【修改群资料权限】和【群成员管理权限】permissionGroupInfo.groupPermission = V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_INFO | V2TIM_COMMUNITY_PERMISSION_MANAGE_GROUP_MEMBER;class TestCallBack : public V2TIMValueCallback<V2TIMString> {void OnSuccess(const V2TIMString &value) override {// 创建权限组成功}void OnError(int error_code, const V2TIMString &error_message) override {// 创建权限组失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->CreatePermissionGroupInCommunity(permissionGroupInfo, callback);// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnCreatePermissionGroup(const V2TIMString &groupID, const V2TIMPermissionGroupInfo &permissionGroupInfo) override {// 权限组创建通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
List<String> deleteList = new ArrayList<>();deleteList.add("权限组 ID1");deleteList.add("权限组 ID2");V2TIMManager.getCommunityManager().deletePermissionGroupFromCommunity("需要删除权限组的社群 ID", deleteList, new V2TIMValueCallback<List<V2TIMPermissionGroupOperationResult>>() {@Overridepublic void onSuccess(List<V2TIMPermissionGroupOperationResult> results) {// 删除成功,results 为每个权限组的操作结果}@Overridepublic void onError(int code, String desc) {// 删除失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onDeletePermissionGroup(String groupID, List<String> permissionGroupIDList) {// 权限组删除通知}});
NSMutableArray *deleteList = [NSMutableArray array];[deleteList addObject:@"权限组 ID1"];[deleteList addObject:@"权限组 ID2"];[[V2TIMManager sharedInstance] deletePermissionGroupFromCommunity:@"需要删除权限组的社群 ID"permissionGroupIDList:deleteList succ:^(NSMutableArray<V2TIMPermissionGroupOperationResult *> *resultList) {// 删除成功,resultList 为每个权限组的操作结果} fail:^(int code, NSString *desc) {// 删除失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onDeletePermissionGroup:(NSString *)groupID permissionGroupIDList:(NSArray<NSString *>*)permissionGroupIDList {// 权限组删除通知}
V2TIMStringVector permissionGroupIDList;permissionGroupIDList.PushBack("权限组 ID1");permissionGroupIDList.PushBack("权限组 ID2");class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupOperationResultVector> {void OnSuccess(const V2TIMPermissionGroupOperationResultVector &value) override {// 删除成功,results 为每个权限组的操作结果}void OnError(int error_code, const V2TIMString &error_message) override {// 删除失败}};auto*callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->DeletePermissionGroupFromCommunity("需要删除权限组的社群 ID", permissionGroupIDList, callback);// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnDeletePermissionGroup(const V2TIMString &groupID, const V2TIMStringVector &permissionGroupIDList)override {// 权限组删除通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
modifyPermissionGroupInfoInCommunity
(Android / iOS & Mac / Windows) 修改权限组的名称、权限、自定义字段。V2TIMPermissionGroupInfo v2TIMPermissionGroupInfo = new V2TIMPermissionGroupInfo();v2TIMPermissionGroupInfo.setGroupID("需要修改权限组的社群 ID"); // 必填v2TIMPermissionGroupInfo.setPermissionGroupID("需要修改的权限组 ID"); // 必填v2TIMPermissionGroupInfo.setPermissionGroupName("需要修改的权限组名称");// 该权限组的成员具有【管理权限组资料权限】和【权限组成员管理权限】long communityPermission = V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO | V2TIMPermissionGroupInfo.V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER;v2TIMPermissionGroupInfo.setGroupPermission(communityPermission);v2TIMPermissionGroupInfo.setCustomData("需要修改的自定义字符串");V2TIMManager.getCommunityManager().modifyPermissionGroupInfoInCommunity(v2TIMPermissionGroupInfo, new V2TIMCallback() {@Overridepublic void onSuccess() {// 修改权限组资料成功}@Overridepublic void onError(intcode, String desc) {// 修改权限组资料失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onChangePermissionGroupInfo(String groupID, V2TIMPermissionGroupInfo permissionGroupInfo) {// 权限组更新通知}});
V2TIMPermissionGroupInfo *permissionGroupInfo = [[V2TIMPermissionGroupInfo alloc] init];permissionGroupInfo.groupID = @"需要修改权限组的社群 ID"; // 必填permissionGroupInfo.permissionGroupID = @"需要修改的权限组 ID"; // 必填permissionGroupInfo.permissionGroupName = @"需要修改的权限组名称";permissionGroupInfo.customData = @"需要修改的自定义字符串";// 该权限组的成员具有【管理权限组资料权限】和【权限组成员管理权限】permissionGroupInfo.groupPermission =V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO | V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER;[[V2TIMManager sharedInstance] modifyPermissionGroupInfoInCommunity:permissionGroupInfo succ:^{// 修改权限组资料成功} fail:^(int code, NSString *desc) {// 修改权限组资料失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onChangePermissionGroupInfo:(NSString *)groupID permissionGroupInfo:(V2TIMPermissionGroupInfo *)permissionGroupInfo {// 权限组更新通知}
V2TIMPermissionGroupInfo modifyInfo;modifyInfo.groupID = "需要修改权限组的社群 ID"; // 必填modifyInfo.permissionGroupID = "需要修改的权限组 ID"; // 必填modifyInfo.permissionGroupName = "需要修改的权限组名称";modifyInfo.customData = "需要修改的自定义字符串";// 该权限组的成员具有【管理权限组资料权限】和【权限组成员管理权限】modifyInfo.groupPermission = V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_INFO | V2TIM_COMMUNITY_PERMISSION_MANAGE_PERMISSION_GROUP_MEMBER;modifyInfo.modifyFlag = V2TIMPermissionGroupInfoModifyFlag::V2TIM_PERMISSION_MODIFY_FLAG_NAME| V2TIMPermissionGroupInfoModifyFlag::V2TIM_PERMISSION_MODIFY_FLAG_GROUP_PERMISSION| V2TIMPermissionGroupInfoModifyFlag::V2TIM_PERMISSION_MODIFY_FLAG_CUSTOM_DATA;class TestCallBack : public V2TIMValueCallback<V2TIMString> {void OnSuccess(const V2TIMString &value) override {// 修改权限组资料成功}void OnError(int error_code, const V2TIMString &error_message) override {// 修改权限组资料失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->ModifyPermissionGroupInfoInCommunity(modifyInfo, newCppAPITestImpl::Callback("ModifyPermissionGroupInfoInCommunity"));// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnChangePermissionGroupInfo(const V2TIMString &groupID, const V2TIMPermissionGroupInfo &permissionGroupInfo) override {// 权限组更新通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
getPermissionGroupListInCommunity
(Android / iOS & Mac / Windows) 获取权限组列表。当参数 permissionGroupIDList
非空时,表示获取指定的权限组列表;当 permissionGroupIDList
为空时,表示获取所有的权限组列表。List<String> permissionGroupIDList = new ArrayList<>();// permissionGroupIDList 列表有值,表示获取指定的权限组列表;permissionGroupIDList 为空,表示获取所有的权限组列表permissionGroupIDList.add("需要获取的权限组 ID");V2TIMManager.getCommunityManager().getPermissionGroupListInCommunity("需要获取权限组列表的社群 ID", permissionGroupIDList, new V2TIMValueCallback<List<V2TIMPermissionGroupInfoResult>>() {@Overridepublic void onSuccess(List<V2TIMPermissionGroupInfoResult> resultList) {// 获取权限组列表成功}@Override public voidonError(int code, String desc) {// 获取权限组列表失败}});
NSMutableArray *permissionGroupIDList = [NSMutableArray array];// permissionGroupIDList 列表有值,表示获取指定的权限组列表;permissionGroupIDList 为空,表示获取所有的权限组列表[permissionGroupIDList addObject:@"需要获取的权限组 ID"];[[V2TIMManager sharedInstance] getPermissionGroupListInCommunity:@"需要获取权限组列表的社群 ID"permissionGroupIDList:permissionGroupIDList succ:^(NSMutableArray<V2TIMPermissionGroupInfoResult *>*resultList) {// 获取权限组列表成功} fail:^(int code, NSString *desc) {// 获取权限组列表失败}];
V2TIMStringVector permissionGroupIDList;// permissionGroupIDList 列表有值,表示获取指定的权限组列表;permissionGroupIDList 为空,表示获取所有的权限组permissionGroupIDList.PushBack("需要获取的权限组 ID");class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupInfoResultVector> {void OnSuccess(constV2TIMPermissionGroupInfoResultVector &value) override {// 获取权限组列表成功}void OnError(int error_code,const V2TIMString &error_message) override {// 获取权限组列表失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->GetPermissionGroupListInCommunity("需要获取权限组列表的社群 ID", permissionGroupIDList, callback);
V2TIMManager.getCommunityManager().getJoinedPermissionGroupListInCommunity("需要获取权限组列表的社群 ID", new V2TIMValueCallback<List<V2TIMPermissionGroupInfoResult>>() {@Override public voidonSuccess(List<V2TIMPermissionGroupInfoResult> resultList) {// 获取已加入的权限组成功}@Override public voidonError(int code, String desc) {// 获取已加入的权限组失败}});
[[V2TIMManager sharedInstance] getJoinedPermissionGroupListInCommunity:@"需要获取权限组列表的社群 ID"succ:^(NSMutableArray<V2TIMPermissionGroupInfoResult *> *resultList) {// 获取已加入的权限组成功} fail:^(int code, NSString *desc) {// 获取已加入的权限组失败}];
class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupInfoResultVector> {void OnSuccess(constV2TIMPermissionGroupInfoResultVector &value) override {// 获取已加入的权限组成功}void OnError(interror_code, const V2TIMString &error_message) override {// 获取已加入的权限组失败}};auto *callback = newTestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->GetJoinedPermissionGroupListInCommunity("需要获取权限组列表的社群 ID", callback);
addCommunityMembersToPermissionGroup
(Android / iOS & Mac / Windows) 添加权限组成员,每次最多添加 20 个成员。List<String> memberList = new ArrayList<>();// 每次最多添加 20 个成员memberList.add("添加群成员1的 userID");memberList.add("添加群成员2的 userID");V2TIMManager.getCommunityManager().addCommunityMembersToPermissionGroup("需要添加权限组群成员的社群 ID", "需要添加权限组群成员的权限组 ID", memberList, new V2TIMValueCallback<List<V2TIMPermissionGroupMemberOperationResult>>() {@Override public voidonSuccess(List<V2TIMPermissionGroupMemberOperationResult> resultList) {// 添加成员成功}@Override publicvoid onError(int code, String desc) {// 添加成员失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onAddMembersToPermissionGroup(String groupID, String permissionGroupID, List<String>memberIDList) {// 权限组成员添加通知}});
NSMutableArray *memberList = [NSMutableArray array];[memberList addObject:@"添加群成员1的 userID"];[memberList addObject:@"添加群成员2的 userID"];[[V2TIMManager sharedInstance] addCommunityMembersToPermissionGroup:@"需要添加权限组群成员的社群 ID"permissionGroupID:@"需要添加权限组群成员的权限组 ID" memberList:memberList succ:^(NSMutableArray<V2TIMPermissionGroupMemberOperationResult *> *resultList) {// 添加成员成功} fail:^(int code, NSString *desc) {// 添加成员失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onAddMembersToPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList {// 权限组成员添加通知}
V2TIMStringVector memberIDList;memberIDList.PushBack("添加群成员1的 userID");memberIDList.PushBack("添加群成员2的 userID");class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupMemberOperationResultVector> {void OnSuccess(constV2TIMPermissionGroupMemberOperationResultVector &value) override {// 添加成员成功}void OnError(interror_code, const V2TIMString &error_message) override {// 添加成员失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityMembersToPermissionGroup("需要添加权限组群成员的社群 ID", "需要添加权限组群成员的权限组 ID", memberIDList, callback);// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnAddMembersToPermissionGroup(const V2TIMString &groupID, const V2TIMString &permissionGroupID,const V2TIMStringVector &memberIDList) override {// 权限组成员添加通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
removeCommunityMembersFromPermissionGroup
(Android / iOS & Mac / Windows) 从权限组中移除群成员。List<String> memberList = new ArrayList<>();memberList.add("移除群成员1的 userID");memberList.add("移除群成员2的 userID"); V2TIMManager.getCommunityManager().removeCommunityMembersFromPermissionGroup("需要移除权限组群成员的社群 ID", "需要移除权限组群成员的权限组 ID", memberList, new V2TIMValueCallback<List<V2TIMPermissionGroupMemberOperationResult>>() {@Override public voidonSuccess(List<V2TIMPermissionGroupMemberOperationResult> resultList) {// 移除群成员成功}@Override public void onError(int code, String desc) {// 移除群成员失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onRemoveMembersFromPermissionGroup(String groupID, String permissionGroupID, List<String>memberIDList) {// 权限组成员移除通知}});
NSMutableArray *memberList = [NSMutableArray array];[memberList addObject:@"移除群成员1的 userID"];[memberList addObject:@"移除群成员2的 userID"];[[V2TIMManager sharedInstance] removeCommunityMembersFromPermissionGroup:@"需要移除权限组群成员的社群 ID" permissionGroupID:@"需要移除权限组群成员的权限组 ID" memberList:memberList succ:^(NSMutableArray<V2TIMPermissionGroupMemberOperationResult *> *resultList) {// 移除群成员成功} fail:^(int code, NSString *desc) {// 移除群成员失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onRemoveMembersFromPermissionGroup:(NSString *)groupID permissionGroupID:(NSString *)permissionGroupID memberIDList:(NSArray<NSString *> *)memberIDList {// 移除权限组成员通知}
V2TIMStringVector memberIDList;memberIDList.PushBack("移除群成员1的 userID");memberIDList.PushBack("移除群成员2的 userID"); class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupMemberOperationResultVector> {void OnSuccess(constV2TIMPermissionGroupMemberOperationResultVector &value) override {// 移除群成员成功}void OnError(interror_code, const V2TIMString &error_message) override {// 移除群成员失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->RemoveCommunityMembersFromPermissionGroup("需要移除权限组群成员的社群 ID", "需要移除权限组群成员的权限组 ID", memberIDList, callback);// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnRemoveMembersFromPermissionGroup(const V2TIMString &groupID, const V2TIMString &permissionGroupID, const V2TIMStringVector &memberIDList) override {// 权限组成员移除通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
getCommunityMemberListInPermissionGroup
(Android / iOS & Mac / Windows) 获取权限组中的成员列表,其中参数 nextCursor
为续拉游标,首次拉取时填空字符串,续拉时填上一次调用结果中的返回值。V2TIMManager.getCommunityManager().getCommunityMemberListInPermissionGroup("需要获取权限组成员的社群 ID", "需要获取权限组成员的权限组 ID", "", new V2TIMValueCallback<V2TIMPermissionGroupMemberInfoResult>() {@Overridepublic void onSuccess(V2TIMPermissionGroupMemberInfoResult result) {// 获取权限组中的成员列表成功,其中 result.getNextCursor() 返回续拉游标,再次调用该接口续拉时填入该返回值}@Overridepublic void onError(int code, String desc) {// 获取权限组中的成员列表失败}});
[[V2TIMManager sharedInstance] getCommunityMemberListInPermissionGroup:@"需要获取权限组成员的社群 ID"permissionGroupID:@"需要获取权限组成员的权限组 ID" nextCursor:@"" succ:^(NSString *nextCursor,NSMutableArray<V2TIMGroupMemberFullInfo *> *resultList) {// 获取权限组中的成员列表成功,其中 nextCursor 为续拉游标,再次调用该接口续拉时填入该返回值} fail:^(int code, NSString *desc) {// 获取权限组中的成员列表失败}];
class TestCallBack : public V2TIMValueCallback<V2TIMPermissionGroupMemberInfoResult> {void OnSuccess(constV2TIMPermissionGroupMemberInfoResult &value) override {// 获取权限组中的成员列表成功,其中 value.nextCursor 返回续拉游标,再次调用该接口续拉时填入该返回值}void OnError(int error_code, constV2TIMString &error_message) override {// 获取权限组中的成员列表失败}};auto *callback = new TestCallBack;V2TIMManager::GetInstance()->GetCommunityManager()->GetCommunityMemberListInPermissionGroup("需要获取权限组成员的社群 ID", "需要获取权限组成员的权限组 ID", "", callback);
setTopicInfo
(Android / iOS & Mac / Windows) 修改话题的默认权限,该话题的默认权限对所有群成员 everyone 生效(群主除外)。// 假设需求为所有社群成员都有在当前话题发消息的权限和拉取加入社群前的在该话题的历史消息权限long topicPermission = V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_SEND_MESSAGE | V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE;V2TIMTopicInfo topicInfo = new V2TIMTopicInfo();topicInfo.setTopicID("需要设置话题默认权限的话题 ID");topicInfo.setDefaultPermissions(topicPermission);V2TIMManager.getCommunityManager().setTopicInfo(topicInfo,new V2TIMCallback() {@Overridepublic void onSuccess() {// 修改话题默认权限成功}@Override public voidonError(int code, String desc) {// 修改话题默认权限失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onChangeTopicInfo(String groupID, V2TIMTopicInfo topicInfo) {// 话题信息更新通知}});
// 假设需求为所有社群成员都有在当前话题发消息的权限和拉取加入社群前的在该话题的历史消息权限V2TIMTopicInfo *info = [[V2TIMTopicInfo alloc] init];info.topicID = @"需要设置话题默认权限的话题 ID";info.defaultPermissions = V2TIM_TOPIC_PERMISSION_SEND_MESSAGE | V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE;[[V2TIMManager sharedInstance] setTopicInfo:info succ:^{// 修改话题默认权限成功} fail:^(int code, NSString *desc) {// 修改话题默认权限失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onChangeTopicInfo:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo {// 话题信息更新通知}
// 假设需求为所有社群成员都有在当前话题发消息的权限和拉取加入社群前的在该话题的历史消息权限V2TIMTopicInfo topicInfo;topicInfo.topicID = "需要设置话题默认权限的话题 ID";topicInfo.defaultPermissions = V2TIM_TOPIC_PERMISSION_SEND_MESSAGE | V2TIM_TOPIC_PERMISSION_GET_HISTORY_MESSAGE;topicInfo.modifyFlag = V2TIM_COMMUNITY_MODIFY_FLAG_DEFAULT_PERMISSIONS;class TestCallBack : public V2TIMValueCallback<V2TIMString> {void OnSuccess(const V2TIMString &value)override {// 修改话题默认权限成功}void OnError(int error_code, const V2TIMString &error_message) override {// 修改话题默认权限失败}};auto *callback = new TestCallBack; V2TIMManager::GetInstance()->GetGroupManager()->SetTopicInfo(topicInfo, callback);// 社群事件监听class CommunityListener final : public V2TIMCommunityListener {public:CommunityListener() = default;~CommunityListener() override = default;void OnChangeTopicInfo(const V2TIMString &groupID, const V2TIMTopicInfo &topicInfo) override {// 话题信息更新通知}};CommunityListener communityListener;V2TIMManager::GetInstance()->GetCommunityManager()->AddCommunityListener(&communityListener);
addTopicPermissionToPermissionGroup
(Android / iOS & Mac / Windows) 向权限组添加话题权限,话题权限对权限组中的成员生效。// 假设需求是在权限组中的成员具有【管理话题1的权限】和【在话题1中禁言成员的权限】,以及【管理话题2的权限】和【在话题2中撤回他人消息的权限】long topicPermission1 = V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_MUTE_MEMBER;long topicPermission2 = V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIMPermissionGroupInfo.V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE;HashMap<String, Long> topicPermissionMap = new HashMap<>();topicPermissionMap.put("话题1 ID",topicPermission1);topicPermissionMap.put("话题2 ID", topicPermission2);V2TIMManager.getCommunityManager().addTopicPermissionToPermissionGroup("需要添加话题权限的社群 ID", "需要添加话题权限的权限组 ID", topicPermissionMap, new V2TIMValueCallback<List<V2TIMTopicOperationResult>>() {@Overridepublic void onSuccess(List<V2TIMTopicOperationResult> v2TIMTopicOperationResults) {// 添加话题权限成功,参数包含各个话题权限的添加结果}@Override public void onError(int code, String desc) {// 添加话题权限失败}});// 社群群事件监听V2TIMManager.getCommunityManager().addCommunityListener(new V2TIMCommunityListener() {@Overridepublic void onAddTopicPermission(String groupID, String permissionGroupID, HashMap<String, Long>topicPermissionMap) {// 添加话题权限通知}});
// 假设需求是在权限组中的成员具有【管理话题1的权限】和【在话题1中禁言成员的权限】,以及【管理话题2的权限】和【在话题2中撤回他人消息的权限】uint64_t topicPermission1 = V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIM_TOPIC_PERMISSION_MUTE_MEMBER;uint64_t topicPermission2 = V2TIM_TOPIC_PERMISSION_MANAGE_TOPIC | V2TIM_TOPIC_PERMISSION_REVOKE_OTHER_MEMBER_MESSAGE;NSDictionary<NSString *,NSNumber *> *topicPermissionMap = [[NSMutableDictionary alloc] init];[topicPermissionMap setValue:[NSNumber numberWithUnsignedLongLong:topicPermission1] forKey:@"话题1 ID"];[topicPermissionMap setValue:[NSNumber numberWithUnsignedLongLong:topicPermission2] forKey:@"话题2 ID"];[[V2TIMManager sharedInstance] addTopicPermissionToPermissionGroup:@"需要添加话题权限的社群 ID"permissionGroupID:@"需要添加话题权限的权限组 ID" topicPermissionMap:topicPermissionMap succ:^(NSMutableArray<V2TIMTopicOperationResult *> *resultList) {// 添加话题权限成功,参数包含各个话题权限的添加结果} fail:^(int code, NSString *desc) {// 添加话题权限失败}];// 社群事件监听[[V2TIMManager sharedInstance] addCommunityListener:self];- (void)onAddTopicPermission:(NSString *)groupID permissionGroupID:(NSString *)pe