群组相关介绍请参考 群组系统、群组管理 和 群组自定义字段。
创建群组。
原型
TIM_DECL int TIMGroupCreate(const char* json_group_create_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_create_param | const char* | 创建群组的参数 JSON 字符串 |
cb | TIMCommCallback | 创建群组成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 创建群组时可以指定群 ID,若未指定时 IM 通讯云服务器会生成一个唯一的 ID,以便后续操作,群组 ID 通过创建群组时传入的回调返回。
- 创建群参数的 JSON Key 详情请参考 CreateGroupParam。
示例
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;
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"
}
删除(解散)群组。
原型
TIM_DECL int TIMGroupDelete(const char* group_id, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 要删除的群组 ID |
cb | TIMCommCallback | 删除群组成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 对于私有群,任何人都无法解散群组。
- 对于公开群、聊天室和直播大群,群主可以解散群组。
- 删除指定群组 group_id 的接口,删除成功与否可根据回调 cb 的参数判断。
申请加入群组。
原型
TIM_DECL int TIMGroupJoin(const char* group_id, const char* hello_msg, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 要加入的群组 ID |
hello_msg | const char* | 申请理由(选填) |
cb | TIMCommCallback | 申请加入群组成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 私有群不能由用户主动申请入群。
- 公开群和聊天室可以主动申请进入。
如果群组设置为需要审核,申请后管理员和群主会受到申请入群系统消息,需要等待管理员或者群主审核,如果群主设置为任何人可加入,则直接入群成功。直播大群可以任意加入群组。- 申请加入指定群组 group_id 的接口,申请加入的操作成功与否可根据回调 cb 的参数判断。
退出群组。
原型
TIM_DECL int TIMGroupQuit(const char* group_id, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 要退出的群组 ID |
cb | TIMCommCallback | 退出群组成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 对于私有群,全员可退出群组。
- 对于公开群、聊天室和直播大群,群主不能退出。
- 退出指定群组 group_id 的接口,退出成功与否可根据回调 cb 的参数判断。
邀请加入群组。
原型
TIM_DECL int TIMGroupInviteMember(const char* json_group_invite_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_invite_param | const char* | 邀请加入群组的 JSON 字符串 |
cb | TIMCommCallback | 邀请加入群组成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 只有私有群可以拉用户入群。
- 公开群、聊天室邀请用户入群。
- 需要用户同意;直播大群不能邀请用户入群。
- 此接口支持批量邀请成员加入群组,JSON Key 详情请参考 GroupInviteMemberParam。
示例
Json::Value json_value_invite;
json_value_invite[kTIMGroupInviteMemberParamGroupId] = groupid;
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"
}
删除群组成员。
原型
TIM_DECL int TIMGroupDeleteMember(const char* json_group_delete_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_delete_param | const char* | 删除群组成员的 JSON 字符串 |
cb | TIMCommCallback | 删除群组成员成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 对于私有群:只有创建者可删除群组成员。
- 对于公开群和聊天室:只有管理员和群主可以踢人。
- 对于直播大群:不能踢人。
- 此接口支持批量删除群成员,JSON Key 详情请参考 GroupDeleteMemberParam。
示例
Json::Value json_value_delete;
json_value_delete[kTIMGroupDeleteMemberParamGroupId] = groupid;
json_value_delete[kTIMGroupDeleteMemberParamUserData] = "reason";
json_value_delete[kTIMGroupDeleteMemberParamIdentifierArray].append("user1");
json_value_delete[kTIMGroupDeleteMemberParamIdentifierArray].append("user2");
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"
}
获取已加入群组列表。
原型
TIM_DECL int TIMGroupGetJoinedGroupList(TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
cb | TIMCommCallback | 获取已加入群组列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 此接口可以获取自己所加入的群列表。
- 此接口只能获得加入的部分直播大群的列表。
- 此接口用于获取当前用户已加入的群组列表,返回群组的基础信息。具体返回的群组基本信息字段参考 GroupBaseInfo。
获取群组信息列表。
原型
TIM_DECL int TIMGroupGetGroupInfoList(const char* json_group_getinfo_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_getinfo_param | const char* | 获取群组信息列表参数的 JSON 字符串 |
cb | TIMCommCallback | 获取群组信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:此接口用于获取指定群 ID 列表的群详细信息。具体返回的群组详细信息字段参考 GroupDetailInfo。
示例
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" ]
修改群信息。
原型
TIM_DECL int TIMGroupModifyGroupInfo(const char* json_group_modifyinfo_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_modifyinfo_param | const char* | 设置群信息参数的 JSON 字符串 JSON 字符串 |
cb | TIMCommCallback | 设置群信息成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 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"
}
获取群成员信息列表。
原型
TIM_DECL int TIMGroupGetMemberInfoList(const char* json_group_getmeminfos_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_getmeminfos_param | const char* | 获取群成员信息列表参数的 JSON 字符串 |
cb | TIMCommCallback | 获取群成员信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 任何群组类型都可以获取成员列表。
- 直播大群只能拉取部分成员列表:包括群主、管理员和部分成员。
- 根据不同的选项,获取群成员信息列表。成员信息的各个字段含义请参考 GroupMemberInfo。
示例
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] = groupid;
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
}
}
修改群成员信息。
原型
TIM_DECL int TIMGroupModifyMemberInfo(const char* json_group_modifymeminfo_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_modifymeminfo_param | const char* | 设置群信息参数的 JSON 字符串 |
cb | TIMCommCallback | 设置群成员信息成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 权限说明:
- 只有群主或者管理员可以进行对群成员的身份进行修改。
- 直播大群不支持修改用户群内身份。
- 只有群主或者管理员可以进行对群成员进行禁言。
kTIMGroupModifyMemberInfoParamModifyFlag
可以按位或设置多个值,不同的 flag 设置不同的键。请参考 GroupModifyMemberInfoParam。
示例
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"
}
标记群成员。
原型
TIM_DECL int TIMGroupMarkGroupMemberList(const char* group_id, const char* member_array, uint32_t mark_type, bool enable_mark, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
member_array | const char* | 群成员 ID 列表 |
mark_type | uint32_t | 标记类型。数字类型,大于等于 1000,您可以自定义。一个直播群里最多允许定义 10 个标记 |
enable_mark | bool | true 表示添加标记,false 表示移除标记 |
cb | const void* | 设置/移除群成员自定义角色成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,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);
获取群未决信息列表群未决信息是指还没有处理的操作,例如,邀请加群或者请求加群操作还没有被处理,称之为群未决信息。
原型
TIM_DECL int TIMGroupGetPendencyList(const char* json_group_getpendence_list_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_getpendence_list_param | const char* | 设置群未决信息参数的 JSON 字符串 |
cb | TIMCommCallback | 获取群未决信息列表成功与否的回调。回调函数定义和参数解析请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 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_getpendence_list_param JSON 字符串如下
{
"group_pendency_option_max_limited" : 0,
"group_pendency_option_start_time" : 0
}
上报群未决信息已读。
原型
TIM_DECL int TIMGroupReportPendencyReaded(uint64_t time_stamp, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
time_stamp | uint64_t | 已读时间戳(单位秒)。与 GroupPendency 键kTIMGroupPendencyAddTime 指定的时间比较 |
cb | TIMCommCallback | 上报群未决信息已读成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:时间戳 time_stamp 以前的群未决请求都将置为已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。
处理群未决信息。
原型
TIM_DECL int TIMGroupHandlePendency(const char* json_group_handle_pendency_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_handle_pendency_param | const char* | 处理群未决信息参数的 JSON 字符串 |
cb | TIMCommCallback | 处理群未决信息成功与否的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:
- 对于群的未决信息,IM SDK 增加了处理接口。审批人可以选择对单条信息进行同意或者拒绝。已处理成功过的未决信息不能再次处理。
- 处理未决信息时需要带一个未决信息 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" : ""
}
}
获取指定群在线人数。
原型
TIM_DECL int TIMGroupGetOnlineMemberCount(const char* groupid, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
cb | TIMCommCallback | 获取指定群在线人数的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
说明:请注意
- 目前只支持:直播群( AVChatRoom)。
- 该接口有频限检测,SDK 限制调用频率为60秒1次
示例
TIMGroupGetOnlineMemberCount("lamarzhang_group_public", [](int32_t code, const char* desc, const char* json_param, const void* user_data) {
}, nullptr);
json_param 的示例。 json key 请参考 [GroupGetOnlineMemberCountResult](TIMCloudCallback.h)
{"group_get_online_member_count_result":0}
搜索群资料(5.4.666 及以上版本支持,需要您购买旗舰版套餐)。
原型
TIM_DECL int TIMGroupSearchGroups(const char *json_group_search_groups_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_search_groups_param | const char* | 群列表的参数 array ,具体参考 GroupSearchParam |
cb | TIMCommCallback | 搜索群列表回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 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.appned(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](TIMCloudDef.h)
[{
"group_detial_info_add_option": 1,
"group_detial_info_create_time": 0,
"group_detial_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_detial_info_face_url": "",
"group_detial_info_group_id": "lamarzhang_group_public",
"group_detial_info_group_name": "lamarzhang_group_public",
"group_detial_info_group_type": 0,
"group_detial_info_info_seq": 9,
"group_detial_info_introduction": "Instroduction",
"group_detial_info_is_shutup_all": false,
"group_detial_info_last_info_time": 1620810613,
"group_detial_info_last_msg_time": 1620810613,
"group_detial_info_max_member_num": 1000,
"group_detial_info_member_num": 2,
"group_detial_info_next_msg_seq": 2,
"group_detial_info_notification": "Notification",
"group_detial_info_online_member_num": 0,
"group_detial_info_owener_identifier": "lamarzhang",
"group_detial_info_searchable": true,
"group_detial_info_visible": true
}]
搜索群成员(5.4.666 及以上版本支持,需要您购买旗舰版套餐)。
原型
TIM_DECL int TIMGroupSearchGroupMembers(const char *json_group_search_group_members_param, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
json_group_search_group_members_param | const char* | 群成员列表的参数 array ,具体参考 GroupMemberSearchParam |
cb | TIMCommCallback | 搜索群成员列表的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 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_field_list.appned(kTIMGroupMemberSearchFieldKey_Identifier);
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](TIMCloudDef.h)
[{
"group_search_member_result_groupid": "lamarzhang_group_public",
"group_search_member_result_menber_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
}]
}]
初始化群属性,会清空原有的群属性列表。
原型
TIM_DECL int TIMGroupInitGroupAttributes(const char *group_id, const char *json_group_atrributes, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
json_group_atrributes | const char* | 群属性列表的参数,具体参考 GroupAttributes |
cb | TIMCommCallback | 初始化群属性的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
示例
Json::Object json_obj;
json_obj[TIMGroupAttributeKey] = "atrribute_key1";
json_obj[TIMGroupAttributeValue] = "atrribute_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) {
}, nullptr);
// json_param 为空字符串,判断 code 即可
设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性。
原型
TIM_DECL int TIMGroupSetGroupAttributes(const char *group_id, const char *json_group_atrributes, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
json_group_atrributes | const char* | 群属性列表的参数,具体请参考 GroupAttributes |
cb | TIMCommCallback | 设置群属性的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
示例
Json::Object json_obj;
json_obj[TIMGroupAttributeKey] = "atrribute_key1";
json_obj[TIMGroupAttributeValue] = "atrribute_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) {
}, nullptr);
json_param 为空字符串,判断 code 即可
删除群属性。
原型
TIM_DECL int TIMGroupDeleteGroupAttributes(const char *group_id, const char *json_keys, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
json_keys | const char* | 群属性的 key |
cb | TIMCommCallback | 删除群属性的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
示例
Json::Array json_array;
json_array.append("atrribute_key1");
TIMGroupDeleteGroupAttributes("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 字符串带回,判断 code 即可
获取群指定属性,keys 传 nil 则获取所有群属性。
原型
TIM_DECL int TIMGroupGetGroupAttributes(const char *group_id, const char *json_keys, TIMCommCallback cb, const void* user_data);
参数
参数 | 类型 | 含义 |
---|---|---|
group_id | const char* | 群 ID |
json_keys | const char* | 群属性的 key json_keys 传空的字符串则获取所有属性列表 |
cb | TIMCommCallback | 获取群指定属性的回调。回调函数定义请参考 TIMCommCallback |
user_data | const void* | 用户自定义数据,IM SDK 只负责传回给回调函数 cb,不做任何处理 |
返回值
类型 | 含义 |
---|---|
int | 返回 TIM_SUCC 表示接口调用成功(接口只有返回 TIM_SUCC,回调 cb 才会被调用),其他值表示接口调用失败。每个返回值的定义请参考 TIMResult |
示例
Json::Array json_array;
json_array.append("atrribute_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](TIMCloudDef.h)
[{
"group_atrribute_key": "atrribute_key1",
"group_atrribute_value": "atrribute_value1"
}]
本页内容是否解决了您的问题?