IMSDK
即时通信 IM 提供全球接入、单聊、群聊、消息推送、资料关系链托管、账号鉴权等全方位解决方案,并提供完备的 App 接入、后台管理接口。
TIMGroupManagerFunction.h 文件参考

类型定义

typedef void(* TIMGroupTipsEventCallback) (const char *json_group_tip, const void *user_data)
 
typedef void(* TIMGroupAttributeChangedCallback) (const char *group_id, const char *json_group_attribute_array, const void *user_data)
 
typedef void(* TIMGroupCounterChangedCallback) (const char *group_id, const char *group_counter_key, int64_t group_counter_new_value, const void *user_data)
 
typedef void(* TIMGroupTopicCreatedCallback) (const char *group_id, const char *topic_id, const void *user_data)
 
typedef void(* TIMGroupTopicDeletedCallback) (const char *group_id, const char *topic_id_array, const void *user_data)
 
typedef void(* TIMGroupTopicChangedCallback) (const char *group_id, const char *topic_info, const void *user_data)
 

函数

TIM_API void TIMSetGroupTipsEventCallback (TIMGroupTipsEventCallback cb, const void *user_data)
 
TIM_API void TIMSetGroupAttributeChangedCallback (TIMGroupAttributeChangedCallback cb, const void *user_data)
 
TIM_API void TIMSetGroupCounterChangedCallback (TIMGroupCounterChangedCallback cb, const void *user_data)
 
TIM_API void TIMSetGroupTopicCreatedCallback (TIMGroupTopicCreatedCallback cb, const void *user_data)
 
TIM_API void TIMSetGroupTopicDeletedCallback (TIMGroupTopicDeletedCallback cb, const void *user_data)
 
TIM_API void TIMSetGroupTopicChangedCallback (TIMGroupTopicChangedCallback cb, const void *user_data)
 
TIM_API int TIMGroupCreate (const char *json_group_create_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupDelete (const char *group_id, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupJoin (const char *group_id, const char *hello_msg, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupQuit (const char *group_id, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetJoinedGroupList (TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetGroupInfoList (const char *json_group_getinfo_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupSearchGroups (const char *json_group_search_groups_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupModifyGroupInfo (const char *json_group_modifyinfo_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupInitGroupAttributes (const char *group_id, const char *json_group_attributes, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupSetGroupAttributes (const char *group_id, const char *json_group_attributes, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupDeleteGroupAttributes (const char *group_id, const char *json_keys, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetGroupAttributes (const char *group_id, const char *json_keys, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetOnlineMemberCount (const char *group_id, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupSetGroupCounters (const char *group_id, const char *json_group_counter_array, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetGroupCounters (const char *group_id, const char *json_group_counter_key_array, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupIncreaseGroupCounter (const char *group_id, const char *group_counter_key, int64_t group_counter_value, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupDecreaseGroupCounter (const char *group_id, const char *group_counter_key, int64_t group_counter_value, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetJoinedCommunityList (TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupCreateTopicInCommunity (const char *group_id, const char *json_topic_info, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupDeleteTopicFromCommunity (const char *group_id, const char *json_topic_id_array, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupSetTopicInfo (const char *json_topic_info, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetTopicInfoList (const char *group_id, const char *json_topic_id_array, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetMemberInfoList (const char *json_group_getmeminfos_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupSearchGroupMembers (const char *json_group_search_group_members_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupModifyMemberInfo (const char *json_group_modifymeminfo_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupInviteMember (const char *json_group_invite_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupDeleteMember (const char *json_group_delete_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupMarkGroupMemberList (const char *group_id, const char *member_array, uint32_t mark_type, bool enable_mark, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupGetPendencyList (const char *json_group_getpendency_list_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupHandlePendency (const char *json_group_handle_pendency_param, TIMCommCallback cb, const void *user_data)
 
TIM_API int TIMGroupReportPendencyReaded (uint64_t time_stamp, TIMCommCallback cb, const void *user_data)
 

类型定义说明

◆ TIMGroupTipsEventCallback

typedef void(* TIMGroupTipsEventCallback) (const char *json_group_tip, const void *user_data)

1.1 群事件回调

参数
json_group_tip群提示列表,Json Key 详情请参考 GroupTipsElem
user_dataImSDK负责透传的用户自定义数据,未做任何处理
注意
群组系统消息事件包括 加入群、退出群、踢出群、设置管理员、取消管理员、群资料变更、群成员资料变更。此消息是针对所有群组成员下发的

◆ TIMGroupAttributeChangedCallback

typedef void(* TIMGroupAttributeChangedCallback) (const char *group_id, const char *json_group_attribute_array, const void *user_data)

1.2 群属性变更回调

参数
json_group_attribute_array变更的群属性列表, Json Key 请参考 GroupAttributes
user_dataImSDK负责透传的用户自定义数据,未做任何处理

json_group_attribute_array 的示例 (json key 请参考 GroupAttributes)

[{"group_attribute_key":"attribute_key1","group_attribute_value":"attribute_value1"}]

◆ TIMGroupCounterChangedCallback

typedef void(* TIMGroupCounterChangedCallback) (const char *group_id, const char *group_counter_key, int64_t group_counter_new_value, const void *user_data)

1.3 群计数器变更的回调

参数
group_id群组 ID
group_counter_key变更的群计数器的 key
group_counter_new_value变更后的群计数器的 value

◆ TIMGroupTopicCreatedCallback

typedef void(* TIMGroupTopicCreatedCallback) (const char *group_id, const char *topic_id, const void *user_data)

1.4 话题创建的回调

参数
topic_id话题 ID

◆ TIMGroupTopicDeletedCallback

typedef void(* TIMGroupTopicDeletedCallback) (const char *group_id, const char *topic_id_array, const void *user_data)

1.5 话题被删除的回调

参数
group_id话题所属的社群 ID
topic_id_array话题列表

◆ TIMGroupTopicChangedCallback

typedef void(* TIMGroupTopicChangedCallback) (const char *group_id, const char *topic_info, const void *user_data)

1.6 话题更新的回调

参数
topic_info话题信息,参见 TIMGroupTopicInfo 类型

函数说明

◆ TIMSetGroupTipsEventCallback()

TIM_API void TIMSetGroupTipsEventCallback ( TIMGroupTipsEventCallback  cb,
const void *  user_data 
)

2.1 设置群组系统消息回调

参数
cb群消息回调,请参考 TIMGroupTipsEventCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
注意
群组系统消息事件包括 加入群、退出群、踢出群、设置管理员、取消管理员、群资料变更、群成员资料变更。此消息是针对所有群组成员下发的

◆ TIMSetGroupAttributeChangedCallback()

TIM_API void TIMSetGroupAttributeChangedCallback ( TIMGroupAttributeChangedCallback  cb,
const void *  user_data 
)

2.2 设置群组属性变更回调

参数
cb群组属性变更回调,请参考 TIMGroupAttributeChangedCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
注意
某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)

◆ TIMSetGroupCounterChangedCallback()

TIM_API void TIMSetGroupCounterChangedCallback ( TIMGroupCounterChangedCallback  cb,
const void *  user_data 
)

2.3 设置群计数器变更回调

参数
cb群计数器变更回调,请参考 TIMGroupCounterChangedCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
注意
某个已加入的群的计数器被修改了,会返回当前变更的群计数器(该群所有的成员都能收到)

◆ TIMSetGroupTopicCreatedCallback()

TIM_API void TIMSetGroupTopicCreatedCallback ( TIMGroupTopicCreatedCallback  cb,
const void *  user_data 
)

2.4 设置话题被创建的回调

参数
cb群组属性变更回调,请参考 TIMGroupTopicCreatedCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理

◆ TIMSetGroupTopicDeletedCallback()

TIM_API void TIMSetGroupTopicDeletedCallback ( TIMGroupTopicDeletedCallback  cb,
const void *  user_data 
)

2.5 设置话题被删除的回调

参数
cb群组属性变更回调,请参考 TIMGroupTopicDeletedCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理

◆ TIMSetGroupTopicChangedCallback()

TIM_API void TIMSetGroupTopicChangedCallback ( TIMGroupTopicChangedCallback  cb,
const void *  user_data 
)

2.6 设置话题更新的回调

参数
cb群组属性变更回调,请参考 TIMGroupTopicChangedCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理

◆ TIMGroupCreate()

TIM_API int TIMGroupCreate ( const char *  json_group_create_param,
TIMCommCallback  cb,
const void *  user_data 
)

3.1 创建群组

参数
json_group_create_param创建群组的参数Json字符串, Json Key 请参考 CreateGroupParam
cb创建群组成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 创建群组时可以指定群ID,若未指定时IM通讯云服务器会生成一个唯一的ID,以便后续操作,群组ID通过创建群组时传入的回调返回

示例

Json::Value json_group_member_array(Json::arrayValue);
Json::Value json_value_param;
json_value_param[kTIMCreateGroupParamGroupId] = "first group id";
json_value_param[kTIMCreateGroupParamGroupType] = kTIMGroup_Public;
json_value_param[kTIMCreateGroupParamGroupName] = "first group name";
json_value_param[kTIMCreateGroupParamGroupMemberArray] = json_group_member_array;
json_value_param[kTIMCreateGroupParamNotification] = "group notification";
json_value_param[kTIMCreateGroupParamIntroduction] = "group introduction";
json_value_param[kTIMCreateGroupParamFaceUrl] = "group face url";
json_value_param[kTIMCreateGroupParamMaxMemberCount] = 2000;
json_value_param[kTIMCreateGroupParamAddOption] = kTIMGroupAddOpt_Any;
json_value_param[kTIMCreateGroupParamApproveOption] = kTIMGroupAddOpt_Any;
const void* user_data = nullptr; // 回调函数回传
int ret = TIMGroupCreate(json_value_param.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_params, const void* user_data) {
if (ERR_SUCC != code) {
// 创建群组失败
return;
}
// 创建群组成功 解析Json获取创建后的GroupID
}, user_data);
if (TIM_SUCC != ret) {
// TIMGroupCreate 接口调用失败
}
// json_value_param.toStyledString().c_str() 得到 json_group_create_param JSON 字符串如下
{
"create_group_param_add_option" : 2,
"create_group_param_face_url" : "group face url",
"create_group_param_group_id" : "first group id",
"create_group_param_group_member_array" : [],
"create_group_param_group_name" : "first group name",
"create_group_param_group_type" : 0,
"create_group_param_introduction" : "group introduction",
"create_group_param_max_member_num" : 2000,
"create_group_param_notification" : "group notification"
}

◆ TIMGroupDelete()

TIM_API int TIMGroupDelete ( const char *  group_id,
TIMCommCallback  cb,
const void *  user_data 
)

3.2 删除(解散)群组

参数
group_id要删除的群组ID
cb删除群组成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 对于私有群,任何人都无法解散群组。
  • 对于公开群、聊天室和直播大群,群主可以解散群组。 删除指定群组 group_id 的接口,删除成功与否可根据回调cb的参数判断。

◆ TIMGroupJoin()

TIM_API int TIMGroupJoin ( const char *  group_id,
const char *  hello_msg,
TIMCommCallback  cb,
const void *  user_data 
)

3.3 申请加入群组

参数
group_id要加入的群组ID
hello_msg申请理由(选填)
cb申请加入群组成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 私有群不能由用户主动申请入群。
  • 公开群和聊天室可以主动申请进入。
  • 如果群组设置为需要审核,申请后管理员和群主会受到申请入群系统消息,需要等待管理员或者群主审核,如果群主设置为任何人可加入,则直接入群成功。
  • 直播大群可以任意加入群组。 申请加入指定群组 group_id 的接口,申请加入的操作成功与否可根据回调cb的参数判断。

◆ TIMGroupQuit()

TIM_API int TIMGroupQuit ( const char *  group_id,
TIMCommCallback  cb,
const void *  user_data 
)

3.4 退出群组

参数
group_id要退出的群组ID
cb退出群组成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 对于私有群,全员可退出群组。
  • 对于公开群、聊天室和直播大群,群主不能退出。 退出指定群组group_id的接口,退出成功与否可根据回调cb的参数判断。

◆ TIMGroupGetJoinedGroupList()

TIM_API int TIMGroupGetJoinedGroupList ( TIMCommCallback  cb,
const void *  user_data 
)

3.5 获取当前用户已经加入的群列表

参数
cb获取已加入群组列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 此接口可以获取自己所加入的群列表
  • 此接口只能获得加入的部分直播大群的列表。 此接口用于获取当前用户已加入的群组列表,返回群组的基础信息。具体返回的群组信息字段参考[GroupBaseInfo, GroupDetailInfo]()

◆ TIMGroupGetGroupInfoList()

TIM_API int TIMGroupGetGroupInfoList ( const char *  json_group_getinfo_param,
TIMCommCallback  cb,
const void *  user_data 
)

4.1 获取群组信息列表

参数
json_group_getinfo_param获取群组信息列表参数的 Json 字符串
cb获取群组信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
此接口用于获取指定群ID列表的群详细信息。具体返回的群组详细信息字段参考 GroupDetailInfo, GroupBaseInfo

示例

Json::Value groupids;
groupids.append("third group id");
groupids.append("second group id");
groupids.append("first group id");
int ret = TIMGroupGetGroupInfoList(groupids.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, this);
// groupids.toStyledString().c_str() 得到json_group_getinfo_param如下
[ "third group id", "second group id", "first group id" ]

◆ TIMGroupSearchGroups()

TIM_API int TIMGroupSearchGroups ( const char *  json_group_search_groups_param,
TIMCommCallback  cb,
const void *  user_data 
)

4.2 搜索群组信息列表(5.4.666 及以上版本支持,需要您购买旗舰版套餐)

参数
json_group_search_groups_param群列表的参数 array ,Json Key 请参考 GroupSearchParam
cb搜索群列表回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
SDK 会搜索群名称包含于关键字列表 keywordList 的所有群并返回群信息列表。关键字列表最多支持5个。

示例

Json::Array json_keyword_list;
json_keyword_list.append("lamarzhang_group_public");
Json::Array json_field_list;
json_field_list.append(kTIMGroupSearchFieldKey_GroupId);
Json::Object json_obj;
json_obj[TIMGroupSearchParamKeywordList] = json_keyword_list;
json_obj[TIMGroupSearchParamFieldList] = json_field_list;
TIMGroupSearchGroups(json_array.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);

回调的 json_param 示例 (Json Key 请参考 GroupDetailInfo)

[{
"group_de tail_info_add_option": 1,
"group_detail_info_create_time": 0,
"group_detail_info_custom_info": [{
"group_info_custom_string_info_key": "custom_public",
"group_info_custom_string_info_value": ""
}, {
"group_info_custom_string_info_key": "custom_public2",
"group_info_custom_string_info_value": ""
}, {
"group_info_custom_string_info_key": "group_info",
"group_info_custom_string_info_value": ""
}, {
"group_info_custom_string_info_key": "group_test",
"group_info_custom_string_info_value": ""
}],
"group_detail_info_face_url": "",
"group_detail_info_group_id": "lamarzhang_group_public",
"group_detail_info_group_name": "lamarzhang_group_public",
"group_detail_info_group_type": 0,
"group_detail_info_info_seq": 9,
"group_detail_info_introduction": "Instroduction",
"group_detail_info_is_shutup_all": false,
"group_detail_info_last_info_time": 1620810613,
"group_detail_info_last_msg_time": 1620810613,
"group_detail_info_max_member_num": 1000,
"group_detail_info_member_num": 2,
"group_detail_info_next_msg_seq": 2,
"group_detail_info_notification": "Notification",
"group_detail_info_online_member_num": 0,
"group_detail_info_owner_identifier": "lamarzhang",
"group_detail_info_searchable": true,
"group_detail_info_visible": true
}]

◆ TIMGroupModifyGroupInfo()

TIM_API int TIMGroupModifyGroupInfo ( const char *  json_group_modifyinfo_param,
TIMCommCallback  cb,
const void *  user_data 
)

4.3 修改群信息

参数
json_group_modifyinfo_param设置群信息参数的 Json 字符串, Json Key 请参考 GroupModifyInfoParam
cb设置群信息成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
修改群主(群转让)的权限说明:
  • 只有群主才有权限进行群转让操作。
  • 直播大群不能进行群转让操作。 修改群其他信息的权限说明:
  • 对于公开群、聊天室和直播大群,只有群主或者管理员可以修改群简介。
  • 对于私有群,任何人可修改群简介。 kTIMGroupModifyInfoParamModifyFlag 可以按位或设置多个值。不同的flag设置不同的键,详情请参考 GroupModifyInfoParam

设置群所有者示例

Json::Value json_value_modifygroupinfo;
json_value_modifygroupinfo[kTIMGroupModifyInfoParamGroupId] = "first group id";
json_value_modifygroupinfo[kTIMGroupModifyInfoParamModifyFlag] = kTIMGroupModifyInfoFlag_Owner;
json_value_modifygroupinfo[kTIMGroupModifyInfoParamOwner] = "user2";
int ret = TIMGroupModifyGroupInfo(json_value_modifygroupinfo.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);
// json_value_modifygroupinfo.toStyledString().c_str() 得到json_group_modifyinfo_param JSON 字符串如下
{
"group_modify_info_param_group_id" : "first group id",
"group_modify_info_param_modify_flag" : -2147483648,
"group_modify_info_param_owner" : "user2"
}

设置群名称和群通知示例

Json::Value json_value_modifygroupinfo;
json_value_modifygroupinfo[kTIMGroupModifyInfoParamGroupId] = "first group id";
json_value_modifygroupinfo[kTIMGroupModifyInfoParamModifyFlag] = kTIMGroupModifyInfoFlag_Name | kTIMGroupModifyInfoFlag_Notification;
json_value_modifygroupinfo[kTIMGroupModifyInfoParamGroupName] = "first group name to other name";
json_value_modifygroupinfo[kTIMGroupModifyInfoParamNotification] = "first group notification";
int ret = TIMGroupModifyGroupInfo(json_value_modifygroupinfo.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);
// json_value_modifygroupinfo.toStyledString().c_str() 得到json_group_modifyinfo_param JSON 字符串如下
{
"group_modify_info_param_group_id" : "first group id",
"group_modify_info_param_group_name" : "first group name to other name",
"group_modify_info_param_modify_flag" : 3,
"group_modify_info_param_notification" : "first group notification"
}

◆ TIMGroupInitGroupAttributes()

TIM_API int TIMGroupInitGroupAttributes ( const char *  group_id,
const char *  json_group_attributes,
TIMCommCallback  cb,
const void *  user_data 
)

4.4 初始化群属性,会清空原有的群属性列表

参数
group_id群 ID
json_group_attributes群属性的列表, 群属性的 Json Key 请参考 GroupAttributes
cb初始化群属性的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
attributes 的使用限制如下:
  • 6.7 及其以前版本,只支持 AVChatRoom 直播群;
  • 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
  • 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;
  • key 最多支持 16 个,长度限制为 32 字节;
  • value 长度限制为 4k;
  • 总的 attributes(包括 key 和 value)限制为 16k;
  • TIMGroupInitGroupAttributesTIMGroupSetGroupAttributes TIMGroupDeleteGroupAttributes 接口合并计算, SDK 限制为 5 秒 10 次,超过后回调 8511 错误码;后台限制 1 秒 5 次,超过后返回 10049 错误码;
  • TIMGroupGetGroupAttributes 接口 SDK 限制 5 秒 20 次;
  • 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 TIMGroupGetGroupAttributes 拉取到最新的群属性之后,再发起修改操作;
  • 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 TIMGroupGetGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。

示例

Json::Object json_obj;
json_obj[TIMGroupAttributeKey] = "attribute_key1";
json_obj[TIMGroupAttributeValue] = "attribute_value1";
Json::Array json_array;
json_array.append(json_obj);
TIMGroupInitGroupAttributes("lamarzhang_group_public", json_array.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
// json_param 为空字符串,判断 code 即可
}, nullptr);

◆ TIMGroupSetGroupAttributes()

TIM_API int TIMGroupSetGroupAttributes ( const char *  group_id,
const char *  json_group_attributes,
TIMCommCallback  cb,
const void *  user_data 
)

4.5 设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性

参数
group_id群 ID
json_group_attributes群属性的列表, 群属性的 Json Key 请参考 GroupAttributes
cb设置群属性的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 6.7 及其以前版本,只支持 AVChatRoom 直播群;
  • 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
  • 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;

示例

Json::Object json_obj;
json_obj[TIMGroupAttributeKey] = "attribute_key1";
json_obj[TIMGroupAttributeValue] = "attribute_value2";
Json::Array json_array;
json_array.append(json_obj);
TIMGroupSetGroupAttributes("lamarzhang_group_public", json_array.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
// json_param 为空字符串,判断 code 即可
}, nullptr);

◆ TIMGroupDeleteGroupAttributes()

TIM_API int TIMGroupDeleteGroupAttributes ( const char *  group_id,
const char *  json_keys,
TIMCommCallback  cb,
const void *  user_data 
)

4.6 删除群属性

参数
group_id群 ID
json_keys群属性 key 的列表
cb删除群属性的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 6.7 及其以前版本,只支持 AVChatRoom 直播群;
  • 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
  • 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;

示例

Json::Array json_array;
json_array.append("attribute_key1");
TIMGroupDeleteGroupAttributes("lamarzhang_group_public", json_array.toStyledString().c_str() ,[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
// json_param 无 json 字符串带回,判断 code 即可
printf("InitGroupAttributes code:%d|desc:%s|json_param %s\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetGroupAttributes()

TIM_API int TIMGroupGetGroupAttributes ( const char *  group_id,
const char *  json_keys,
TIMCommCallback  cb,
const void *  user_data 
)

4.7 获取群指定属性,若传入的 json_keys 为空,则获取所有群属性。

参数
group_id群 ID
json_keys群属性的 key 列表,若传入为 "", 则获取所有属性列表
cb获取群指定属性的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 6.7 及其以前版本,只支持 AVChatRoom 直播群;
  • 从 6.8 版本开始,同时支持 AVChatRoom、Public、Meeting、Work 四种群类型;
  • 从 7.0 版本开始,除了话题外,群属性支持所有的群类型;

示例

Json::Array json_array;
json_array.append("attribute_key1");
TIMGroupGetGroupAttributes("lamarzhang_group_public", json_array.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("InitGroupAttributes code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

回调的 json_param 示例 (Json key 请参考 GroupAttributes)

[{
"group_attribute_key": "attribute_key1",
"group_attribute_value": "attribute_value1"
}]

◆ TIMGroupGetOnlineMemberCount()

TIM_API int TIMGroupGetOnlineMemberCount ( const char *  group_id,
TIMCommCallback  cb,
const void *  user_data 
)

4.8 获取指定群在线人数

参数
group_id群 ID
cb获取指定群在线人数的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • IMSDK 7.3 以前的版本仅支持直播群( AVChatRoom);
  • IMSDK 7.3 及其以后的版本支持所有群类型。

示例

TIMGroupGetOnlineMemberCount("lamarzhang_group_public", [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);

回调的 json_param 的示例(Json Key 请参考 GroupGetOnlineMemberCountResult)

{"group_get_online_member_count_result":0}

◆ TIMGroupSetGroupCounters()

TIM_API int TIMGroupSetGroupCounters ( const char *  group_id,
const char *  json_group_counter_array,
TIMCommCallback  cb,
const void *  user_data 
)

4.9 设置群计数器(7.0 及其以上版本支持)

参数
group_id群 ID
json_group_counter_array群计数器信息列表,群计数器 Json Key 请参考 TIMGroupCounter
cb设置群计数器的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 该计数器的 key 如果存在,则直接更新计数器的 value 值;如果不存在,则添加该计数器的 key-value;
  • 当群计数器设置成功后,在回调 cb 中会返回最终成功设置的群计数器信息;
  • 除了社群和话题,群计数器支持所有的群组类型。

示例

json::Object json_group_counter;
json_group_counter[kTIMGroupCounterKey] = "test_counter";
json_group_counter[kTIMGroupCounterValue] = 100;
json::Array json_group_counter_array;
json_group_counter_array.push_back(json_group_counter);
TIMGroupSetGroupCounters(GetGroupID().c_str(), json::Serialize(json_group_counter_array).c_str(),
[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
Printf("SetGroupCounters code:%d|desc:%s|json_param:%s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetGroupCounters()

TIM_API int TIMGroupGetGroupCounters ( const char *  group_id,
const char *  json_group_counter_key_array,
TIMCommCallback  cb,
const void *  user_data 
)

4.10 获取群计数器(7.0 及其以上版本支持)

参数
group_id群 ID
json_group_counter_key_array需要获取的群计数器的 key 列表,群计数器 Json Key 请参考 TIMGroupCounter
cb获取群计数器的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 如果传入的 json_group_counter_key_array 为空,则表示获取群内的所有计数器;
  • 除了社群和话题,群计数器支持所有的群组类型。

示例

json::Array json_group_counter_key_array;
json_group_counter_key_array.push_back("test_counter");
TIMGroupGetGroupCounters(GetGroupID().c_str(), json::Serialize(json_group_counter_key_array).c_str(),
[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
Printf("GetGroupCounters code:%d|desc:%s|json_param:%s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupIncreaseGroupCounter()

TIM_API int TIMGroupIncreaseGroupCounter ( const char *  group_id,
const char *  group_counter_key,
int64_t  group_counter_value,
TIMCommCallback  cb,
const void *  user_data 
)

4.11 递增群计数器(7.0 及其以上版本支持)

参数
group_id群 ID
group_counter_key群计数器的 key
group_counter_value群计数器的递增变化量 value
cb递增群计数器的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 group_counter_value 作递增操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 group_counter_value 作递增操作;
  • 除了社群和话题,群计数器支持所有的群组类型。

示例

TIMGroupIncreaseGroupCounter(GetGroupID().c_str(), "key1", 2
[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("IncreaseGroupCounters code:%d|desc:%s|json_param:%s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupDecreaseGroupCounter()

TIM_API int TIMGroupDecreaseGroupCounter ( const char *  group_id,
const char *  group_counter_key,
int64_t  group_counter_value,
TIMCommCallback  cb,
const void *  user_data 
)

4.12 递减群计数器(7.0 及其以上版本支持)

参数
group_id群 ID
group_counter_key群计数器的 key
group_counter_value群计数器的递减变化量 value
cb递减群计数器的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 该计数器的 key 如果存在,则直接在当前值的基础上根据传入的 group_counter_value 作递减操作;反之,添加 key,并在默认值为 0 的基础上根据传入的 group_counter_value 作递减操作
  • 除了社群和话题,群计数器支持所有的群组类型。

示例

TIMGroupDecreaseGroupCounters(GetGroupID().c_str(), "key1", 2,
[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
Printf("DecreaseGroupCounters code:%d|desc:%s|json_param:%s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetJoinedCommunityList()

TIM_API int TIMGroupGetJoinedCommunityList ( TIMCommCallback  cb,
const void *  user_data 
)

5.1 获取当前用户已经加入的支持话题的社群列表

参数
cb获取社群列表的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult

示例

TIMGroupGetJoinedCommunityList([](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("TIMGroupGetJoinedCommunityList code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupCreateTopicInCommunity()

TIM_API int TIMGroupCreateTopicInCommunity ( const char *  group_id,
const char *  json_topic_info,
TIMCommCallback  cb,
const void *  user_data 
)

5.2 创建话题

参数
group_id群 ID
json_topic_info话题信息, Json Key 请参考 TIMGroupTopicInfo
cb创建话题的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult

示例

const std::string group_id = GetCommunityID();
json::Object topic_info;
topic_info[kTIMGroupTopicInfoTopicID] = GetTopicID();
topic_info[kTIMGroupTopicInfoTopicName] = "topic name";
TIMGroupCreateTopicInCommunity(group_id.c_str(), json::Serialize(topic_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("TIMGroupCreateTopicInCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupDeleteTopicFromCommunity()

TIM_API int TIMGroupDeleteTopicFromCommunity ( const char *  group_id,
const char *  json_topic_id_array,
TIMCommCallback  cb,
const void *  user_data 
)

5.3 删除话题

参数
group_id群 ID
json_topic_id_array话题 ID 列表
cb删除话题的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult

示例

const std::string group_id = GetCommunityID();
json::Array json_array;
json_array.push_back("id1");
json_array.push_back("id2");
TIMGroupDeleteTopicFromCommunity(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("TIMGroupDeleteTopicFromCommunity code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupSetTopicInfo()

TIM_API int TIMGroupSetTopicInfo ( const char *  json_topic_info,
TIMCommCallback  cb,
const void *  user_data 
)

5.4 修改话题信息

参数
json_topic_info话题信息, Json Key 请参考 TIMGroupTopicInfo
cb修改话题信息的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult

示例

json::Object topic_info;
topic_info[kTIMGroupTopicInfoTopicID] = GetTopicID();
topic_info[kTIMGroupTopicInfoTopicName] = "topic name";
topic_info[kTIMGroupTopicInfoNotification] = "topic notification";
topic_info[kTIMGroupTopicInfoModifyFlag] = kTIMGroupModifyInfoFlag_Name |
TIMGroupSetTopicInfo(json::Serialize(topic_info).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("TIMGroupSetTopicInfo code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetTopicInfoList()

TIM_API int TIMGroupGetTopicInfoList ( const char *  group_id,
const char *  json_topic_id_array,
TIMCommCallback  cb,
const void *  user_data 
)

5.5 获取话题列表

参数
group_id群 ID
json_topic_id_array话题 ID 列表
cb删除话题的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
: json_topic_id_array 传空时,获取此社群下的所有话题列表

示例

const std::string group_id = GetCommunityID();
json::Array json_array;
json_array.push_back("id1");
json_array.push_back("id2");
TIMGroupGetTopicInfoList(group_id.c_str(), json::Serialize(json_array).c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
printf("TIMGroupGetTopicInfoList code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetMemberInfoList()

TIM_API int TIMGroupGetMemberInfoList ( const char *  json_group_getmeminfos_param,
TIMCommCallback  cb,
const void *  user_data 
)

6.1 获取群成员信息列表

参数
json_group_getmeminfos_param获取群成员信息列表参数的 Json 字符串, Json Key 请参考 GroupMemberGetInfoOption
cb获取群成员信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
普通群(工作群、会议群、公开群、社群)的限制:
  • kTIMGroupMemberGetInfoOptionRoleFlag 只能设置为 TIMGroupMemberRoleFlag 定义的数值,SDK 会返回指定角色的成员。

直播群(AVChatRoom)的限制:

  • 如果设置 kTIMGroupMemberGetInfoOptionRoleFlag 为 TIMGroupMemberRoleFlag 定义的数值,SDK 返回全部成员。返回的人数规则为:拉取最近入群群成员最多 1000 人,新进来的成员排在前面,需要升级旗舰版,并且在 控制台 开启“直播群在线成员列表”开关(6.3 及以上版本支持)。
  • 如果设置 kTIMGroupMemberGetInfoOptionRoleFlag 为群成员自定义标记,旗舰版支持拉取指定标记的成员列表。标记群成员的设置请参考 TIMGroupMarkGroupMemberList
  • 程序重启后,请重新加入群组,否则拉取群成员会报 10007 错误码。
  • 群成员资料信息仅支持 userID | nickName | faceURL | role 字段。

示例

Json::Value identifiers(Json::arrayValue);
...
Json::Value customs(Json::arrayValue);
...
Json::Value option;
option[kTIMGroupMemberGetInfoOptionInfoFlag] = kTIMGroupMemberInfoFlag_None;
option[kTIMGroupMemberGetInfoOptionRoleFlag] = kTIMGroupMemberRoleFlag_All;
option[kTIMGroupMemberGetInfoOptionCustomArray] = customs;
Json::Value getmeminfo_opt;
getmeminfo_opt[kTIMGroupGetMemberInfoListParamGroupId] = group_id;
getmeminfo_opt[kTIMGroupGetMemberInfoListParamIdentifierArray] = identifiers;
getmeminfo_opt[kTIMGroupGetMemberInfoListParamOption] = option;
getmeminfo_opt[kTIMGroupGetMemberInfoListParamNextSeq] = 0;
int ret = TIMGroupGetMemberInfoList(getmeminfo_opt.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, this);
// getmeminfo_opt.toStyledString().c_str() 得到json_group_getmeminfos_param JSON 字符串如下
{
"group_get_members_info_list_param_group_id" : "first group id",
"group_get_members_info_list_param_identifier_array" : [],
"group_get_members_info_list_param_next_seq" : 0,
"group_get_members_info_list_param_option" : {
"group_member_get_info_option_custom_array" : [],
"group_member_get_info_option_info_flag" : 0,
"group_member_get_info_option_role_flag" : 0
}
}

◆ TIMGroupSearchGroupMembers()

TIM_API int TIMGroupSearchGroupMembers ( const char *  json_group_search_group_members_param,
TIMCommCallback  cb,
const void *  user_data 
)

6.2 搜索群成员(5.4.666 及以上版本支持,需要您购买旗舰版套餐)

参数
json_group_search_group_members_param群成员的列表, Json Key 请参考 GroupMemberSearchParam
cb搜索群成员列表的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
SDK 会在本地搜索指定群 ID 列表中,群成员信息(名片、好友备注、昵称、userID)包含于关键字列表 keywordList 的所有群成员并返回群 ID 和群成员列表的 map,关键字列表最多支持5个。

示例

Json::Array json_groupid_list;
json_groupid_list.append("lamarzhang_group_public");
Json::Array json_keyword_list;
json_keyword_list.append("98826");
Json::Array json_field_list;
Json::Object json_obj;
json_obj[TIMGroupMemberSearchParamGroupidList] = json_groupid_list;
json_obj[TIMGroupMemberSearchParamKeywordList] = json_keyword_list;
json_obj[TIMGroupMemberSearchParamFieldList] = json_field_list;
TIMGroupSearchGroupMembers(json_obj.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);

回调的 json_param 示例 (Json Key 请参考 GroupGetOnlineMemberCountResult)

[{
"group_search_member_result_groupid": "lamarzhang_group_public",
"group_search_member_result_member_info_list": [{
"group_member_info_custom_info": [{
"group_info_custom_string_info_key": "group_member_p",
"group_info_custom_string_info_value": ""
}, {
"group_info_custom_string_info_key": "group_member_p2",
"group_info_custom_string_info_value": ""
}],
"group_member_info_identifier": "98826",
"group_member_info_join_time": 1620810613,
"group_member_info_member_role": 4,
"group_member_info_msg_flag": 0,
"group_member_info_msg_seq": 0,
"group_member_info_name_card": "",
"group_member_info_shutup_time": 0
}]
}]

◆ TIMGroupModifyMemberInfo()

TIM_API int TIMGroupModifyMemberInfo ( const char *  json_group_modifymeminfo_param,
TIMCommCallback  cb,
const void *  user_data 
)

6.3 修改群成员信息

参数
json_group_modifymeminfo_param设置群信息参数的 Json 字符串, Json Key 请参考 GroupModifyMemberInfoParam
cb设置群成员信息成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 只有群主或者管理员可以进行对群成员的身份进行修改。
  • 只有群主或者管理员可以进行对群成员进行禁言。 kTIMGroupModifyMemberInfoParamModifyFlag 可以按位或设置多个值,不同的 flag 设置不同的键, flag 信息请参考 TIMGroupMemberModifyInfoFlag

示例

Json::Value json_value_setgroupmeminfo;
json_value_setgroupmeminfo[kTIMGroupModifyMemberInfoParamGroupId] = "third group id";
json_value_setgroupmeminfo[kTIMGroupModifyMemberInfoParamIdentifier] = "user2";
json_value_setgroupmeminfo[kTIMGroupModifyMemberInfoParamModifyFlag] = kTIMGroupMemberModifyFlag_MemberRole | kTIMGroupMemberModifyFlag_NameCard;
json_value_setgroupmeminfo[kTIMGroupModifyMemberInfoParamMemberRole] = kTIMMemberRole_Admin;
json_value_setgroupmeminfo[kTIMGroupModifyMemberInfoParamNameCard] = "change name card";
int ret = TIMGroupModifyMemberInfo(json_value_setgroupmeminfo.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);
// json_value_modifygroupmeminfo.toStyledString().c_str() 得到 json_group_modifymeminfo_param JSON 字符串如下
{
"group_modify_member_info_group_id" : "third group id",
"group_modify_member_info_identifier" : "user2",
"group_modify_member_info_member_role" : 1,
"group_modify_member_info_modify_flag" : 10,
"group_modify_member_info_name_card" : "change name card"
}

◆ TIMGroupInviteMember()

TIM_API int TIMGroupInviteMember ( const char *  json_group_invite_param,
TIMCommCallback  cb,
const void *  user_data 
)

6.4 邀请加入群组

参数
json_group_invite_param邀请加入群组的 Json 字符串, Json Key 请参考 GroupInviteMemberParam
cb邀请加入群组成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 只有私有群可以拉用户入群
  • 公开群、聊天室邀请用户入群
  • 需要用户同意;直播大群不能邀请用户入群。 后台限制单次邀请的群成员个数不能超过 20。 此接口支持批量邀请成员加入群组, Json Key详情请参考 GroupInviteMemberParam

示例

Json::Value json_value_invite;
json_value_invite[kTIMGroupInviteMemberParamGroupId] = group_id;
json_value_invite[kTIMGroupInviteMemberParamUserData] = "userdata";
json_value_invite[kTIMGroupInviteMemberParamIdentifierArray].append("user1");
json_value_invite[kTIMGroupInviteMemberParamIdentifierArray].append("user2");
const void* user_data = nullptr; // 回调函数回传;
int ret = TIMGroupInviteMember(json_value_invite.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_params, const void* user_data) {
if (ERR_SUCC != code) {
// 邀请成员列表失败
return;
}
// 邀请成员列表成功,解析JSON获取每个成员邀请结果
}, user_data);
if (TIM_SUCC != ret) {
// TIMGroupInviteMember 接口调用失败
}
// json_value_invite.toStyledString().c_str() 得到 json_group_invite_param JSON 字符串如下
{
"group_invite_member_param_group_id" : "first group id",
"group_invite_member_param_identifier_array" : [ "user1", "user2" ],
"group_invite_member_param_user_data" : "userdata"
}

◆ TIMGroupDeleteMember()

TIM_API int TIMGroupDeleteMember ( const char *  json_group_delete_param,
TIMCommCallback  cb,
const void *  user_data 
)

6.5 删除群组成员(直播群删除群组成员从 6.6 版本开始支持,需要您购买旗舰版套餐)

参数
json_group_delete_param删除群组成员的 Json 字符串, Json Key 请参考 GroupDeleteMemberParam
cb删除群组成员成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
权限说明:
  • 对于私有群:只有创建者可删除群组成员。
  • 对于公开群和聊天室:只有管理员和群主可以踢人。
  • 对于直播大群:6.6 之前版本只支持禁言(muteGroupMember),不支持踢人。6.6 及以上版本支持禁言和踢人。 此接口支持批量删除群成员, Json Key详情请参考 GroupDeleteMemberParam 该接口其他使用限制请查阅 官网

示例

Json::Value json_value_delete;
json_value_delete[kTIMGroupDeleteMemberParamGroupId] = group_id;
json_value_delete[kTIMGroupDeleteMemberParamUserData] = "reason";
json_value_delete[kTIMGroupDeleteMemberParamIdentifierArray].append("user1");
json_value_delete[kTIMGroupDeleteMemberParamIdentifierArray].append("user2");
json_value_delete[kTIMGroupDeleteMemberParamDuration] = 10;
int ret = TIMGroupDeleteMember(json_value_delete.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_params, const void* user_data) {
}, this));
// json_value_delete.toStyledString().c_str() 得到 json_group_delete_param JSON 字符串如下
{
"group_delete_member_param_group_id" : "third group id",
"group_delete_member_param_identifier_array" : [ "user2", "user3" ],
"group_delete_member_param_user_data" : "reason"
}

◆ TIMGroupMarkGroupMemberList()

TIM_API int TIMGroupMarkGroupMemberList ( const char *  group_id,
const char *  member_array,
uint32_t  mark_type,
bool  enable_mark,
TIMCommCallback  cb,
const void *  user_data 
)

6.6 标记群成员(从 6.6 版本开始支持,需要您购买旗舰版套餐)

参数
group_id群 ID。
member_array群成员 ID 列表。
mark_type标记类型。数字类型,大于等于 1000,您可以自定义,一个直播群里最多允许定义 10 个标记。
enable_marktrue 表示添加标记,false 表示移除标记。
cb设置/移除群成员自定义角色成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 仅支持直播群。
  • 只有群主才有权限标记群组中其他人。

示例

std::string group_id = "avchatroom_group_id";
uint32_t mark_type = 30005;
bool enable_mark = true;
json::Array member_array;
member_array.push_back("user1");
member_array.push_back("user2");
TIMGroupMarkGroupMemberList(group_id.c_str(), json::Serialize(member_array).c_str(), mark_type, enable_mark,
[](int32_t code, const char* desc, const char* json_param, const void* user_data) {
Printf("MarkGroupMemberList code:%d|desc:%s|json_param %s\r\n", code, desc, json_param);
}, nullptr);

◆ TIMGroupGetPendencyList()

TIM_API int TIMGroupGetPendencyList ( const char *  json_group_getpendency_list_param,
TIMCommCallback  cb,
const void *  user_data 
)

7.1 获取群未决信息列表

参数
json_group_getpendency_list_param设置群未决信息参数的 Json 字符串, Json Key 请参考 GroupPendencyOption
cb获取群未决信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 此处的群未决消息泛指所有需要审批的群相关的操作。例如:加群待审批,拉人入群待审批等等。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已决标志。
  • UserA 申请加入群 GroupA,则群管理员可获取此未决相关信息,UserA 因为没有审批权限,不需要获取此未决信息。
  • 如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未决相关信息,因为该未决信息待 UserA 审批
  • kTIMGroupPendencyOptionStartTime 设置拉取时间戳,第一次请求填 0,后边根据 server 返回的 GroupPendencyResult 键 kTIMGroupPendencyResultNextStartTime 指定的时间戳进行填写。
  • kTIMGroupPendencyOptionMaxLimited 拉取的建议数量, server 可根据需要返回或多或少,不能作为完成与否的标志
  • 权限说明:
    • 只有审批人有权限拉取相关未决信息。

示例

Json::Value get_pendency_option;
get_pendency_option[kTIMGroupPendencyOptionStartTime] = 0;
get_pendency_option[kTIMGroupPendencyOptionMaxLimited] = 0;
int ret = TIMGroupGetPendencyList(get_pendency_option.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
if (ERR_SUCC != code) {
// 获取群未决信息失败
return;
}
}, nullptr);
// get_pendency_option.toStyledString().c_str() 得到json_group_getpendency_list_param JSON 字符串如下
{
"group_pendency_option_max_limited" : 0,
"group_pendency_option_start_time" : 0
}

◆ TIMGroupHandlePendency()

TIM_API int TIMGroupHandlePendency ( const char *  json_group_handle_pendency_param,
TIMCommCallback  cb,
const void *  user_data 
)

7.2 处理群未决信息

参数
json_group_handle_pendency_param处理群未决信息参数的 Json 字符串, Json Key 请参考 GroupHandlePendencyParam
cb处理群未决信息成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
  • 对于群的未决信息,ImSDK增加了处理接口。审批人可以选择对单条信息进行同意或者拒绝。已处理成功过的未决信息不能再次处理。
  • 处理未决信息时需要带一个未决信息 GroupPendency, 可以在接口 TIMGroupGetPendencyList 返回的未决信息列表将未决信息保存下来, 在处理未决信息的时候将 GroupPendency 传入键 kTIMGroupHandlePendencyParamPendency 。

示例

Json::Value pendency; //构造 GroupPendency
...
Json::Value handle_pendency;
handle_pendency[kTIMGroupHandlePendencyParamIsAccept] = true;
handle_pendency[kTIMGroupHandlePendencyParamHandleMsg] = "I accept this pendency";
handle_pendency[kTIMGroupHandlePendencyParamPendency] = pendency;
int ret = TIMGroupHandlePendency(handle_pendency.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
if (ERR_SUCC != code) {
// 上报群未决信息已读失败
return;
}
}, nullptr);
// handle_pendency.toStyledString().c_str() 得到json_group_handle_pendency_param JSON 字符串如下
{
"group_handle_pendency_param_handle_msg" : "I accept this pendency",
"group_handle_pendency_param_is_accept" : true,
"group_handle_pendency_param_pendency" : {
"group_pendency_add_time" : 1551414487947,
"group_pendency_apply_invite_msg" : "Want Join Group, Thank you",
"group_pendency_approval_msg" : "",
"group_pendency_form_identifier" : "user2",
"group_pendency_form_user_defined_data" : "",
"group_pendency_group_id" : "four group id",
"group_pendency_handle_result" : 0,
"group_pendency_handled" : 0,
"group_pendency_pendency_type" : 0,
"group_pendency_to_identifier" : "user1",
"group_pendency_to_user_defined_data" : ""
}
}

◆ TIMGroupReportPendencyReaded()

TIM_API int TIMGroupReportPendencyReaded ( uint64_t  time_stamp,
TIMCommCallback  cb,
const void *  user_data 
)

7.3 上报群未决信息已读

参数
time_stamp已读时间戳(单位秒)。与 GroupPendency 键 kTIMGroupPendencyAddTime 指定的时间比较
cb上报群未决信息已读成功与否的回调。回调函数定义请参考 TIMCommCallback
user_data用户自定义数据,ImSDK只负责传回给回调函数cb,不做任何处理
返回
int 返回TIM_SUCC表示接口调用成功(接口只有返回TIM_SUCC,回调cb才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult
注意
时间戳time_stamp以前的群未决请求都将置为已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。