群组功能

群组功能概述

群组功能对应的管理类为 nim::Team,提供了普通群 (Normal) 以及高级群 (Advanced) 两种形式的群聊功能。高级群拥有更多的权限操作,两种群聊形式在共有操作上保持了接口一致。推荐 APP 开发时只选择一种群类型进行开发。普通群和高级群在原则上是不能互相转换的,他们的群类型在创建时就已经确定。目前版本中,高级群覆盖普通群的全部功能,推荐使用高级群进行开发。

开发手册中所提及的普通群都等同于DEMO中的讨论组。普通群(讨论组)没有权限操作,适用于快速创建多人会话的场景。每个普通群只有一个管理员。管理员可以对群进行增减员操作,普通成员只能对群进行增员操作。在添加新成员的时候,并不需要经过对方同意。

高级群在权限上有更多的限制,权限分为群主、管理员、以及群成员。在添加成员的时候需要对方接受邀请。高级群的群成员资料提供了实时同步功能,并提供了群开关设置字段、第三方扩展字段(仅负责存储和透传)和第三方服务器扩展字段(该配置项只能通过服务器接口设置,对客户端只读)。

群操作 普通群 高级群
邀请成员 任何人 群主、管理员
踢出成员 群主 群主、管理员(管理员之间无法互相踢)
解散群 群主 群主
退群 任何人 管理员、普通成员
处理入群申请 / 群主、管理员
更改自己的群昵称 / 任何人
更改他人群昵称 / 群主、管理员
更改群名称 任何人 群主、管理员
更改群公告 / 群主、管理员
更改群介绍 / 群主、管理员
更新验证方式 / 群主、管理员
添加(删除)管理员 / 群主
移交群主 / 群主
成员禁言 / 群主、管理员
更新群头像 / 群主、管理员

NIMTeamType枚举说明

枚举 说明
kNIMTeamTypeNormal 0 普通群
kNIMTeamTypeAdvanced 1 高级群

NIMTeamUserType枚举说明

枚举 说明
kNIMTeamUserTypeNomal 0 普通成员
kNIMTeamUserTypeCreator 1 创建者
kNIMTeamUserTypeManager 2 管理员
kNIMTeamUserTypeApply 3 申请加入用户
kNIMTeamUserTypeLocalWaitAccept 100 本地记录等待正在入群的用户

群聊消息收发和管理与双人聊天完全相同,仅在消息类型上做了区分,详见消息收发

群通知事件

注册该事件监听群信息变更,包括群组的创建、解散、邀请入群、踢出群组等群相关操作的都通过该事件通知给调用者。

TeamEventCallback参数说明

类型 参数 说明
TeamEvent TeamEvent 群通知信息内容

TeamEvent参数说明

类型 参数 说明
NIMResCode res_code_ 错误码信息,详见NIMResCode
string team_id_ 群组id
NIMNotificationId notification_id_ 群通知类型,包括创建群、解散群等等(详见NIMNotificationId
list ids_ 通知可能涉及到的群成员ID,比如增加管理员操作可以添加多个账号,收到通知时ids对应其多个账号
list invalid_ids_ 通知可能涉及到的失效的群成员ID,比如邀请入群的成员的群数量超限导致当次邀请失败
string Id 通知对单个成员操作的id,比如禁言群成员,移交群主等操作的被操作方id
NIMTeamInfo team_info_ 群信息数据
TeamMemberProperty member_property_ 群成员信息,比如修改自己的群成员属性时,通过kNIMNotificationIdTeamSyncUpdateMemberProperty通知类型来通知
list namecards_ 通知可能涉及到的群成员的用户名片
int opt_ 通知禁言,1:禁言 0: 解除禁言
string attach_ 扩展字段,目前仅kick和invite事件可选(暂不支持)

NIMNotificationId枚举类型说明

枚举 说明
kNIMNotificationIdTeamInvite 0 普通群拉人,{“tinfo”:team_info,"ids":["a1", "a2"],"uinfos":["uinfo1", "uinfo2"]},json串对应NIMTeamEvent字段的数据,下同
kNIMNotificationIdTeamKick 1 普通群踢人,{“tinfo”:tinfo,"ids":["a1", "a2"],"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamLeave 2 退出群,{"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamUpdate 3 群信息更新,{"tinfo":tinfo,"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamDismiss 4 群解散,{"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamApplyPass 5 高级群申请加入成功,{"tinfo":tinfo,"id":"a1","uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamOwnerTransfer 6 高级群移交群主,{"id":"a1","uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamAddManager 7 增加管理员,{"ids":["a1","a2"],"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamRemoveManager 8 移除管理员,{"ids":["a1","a2"],"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamInviteAccept 9 高级群接受邀请进群,{"tinfo":tinfo,"id":"a1","uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdTeamMuteMember 10 禁言/解禁群成员,{"uinfos":["uinfo1", "uinfo2"],“tinfo”:tinfo,"id":"a1","mute":1-禁言,0-解禁}
kNIMNotificationIdNetcallMiss 101 未接电话(暂不支持),{"calltype":1,"channel":6146078138783760761,"from":"id1","ids":["id1","id2"],"time":1430995380471}
kNIMNotificationIdNetcallBill 102 话单(暂不支持),{"calltype":2,"channel":6146077129466446197,"duration":8,"ids":["id1","id2"],"time":1430995117398}
kNIMNotificationIdTeamSyncCreate 1000 创建群{"tinfo" : tinfo}
kNIMNotificationIdTeamMemberChanged 1001 群成员变更{"team_member" : team_member_info}
kNIMNotificationIdTeamSyncUpdateMemberProperty 1002 同步通知:修改自己的群属性{"team_member" : team_member_info} 目前只需kNIMTeamUserKeyNick和kNIMTeamUserKeyBits,接收到该通知时,MemberInfo字段会通知更新的信息
kNIMNotificationIdLocalCreateTeam 2000 本地操作创建群 {"ids" : ["a1", "a2"]}
kNIMNotificationIdLocalApplyTeam 2001 本地操作申请加入群
kNIMNotificationIdLocalRejectApply 2002 本地操作拒绝申请 {"id":"a1"}
kNIMNotificationIdLocalRejectInvite 2003 本地操作拒绝邀请 {"id":"a1"}
kNIMNotificationIdLocalUpdateMemberProperty 2004 本地操作更新群成员属性
kNIMNotificationIdLocalUpdateOtherNick 2005 本地操作更新他人nickname
kNIMNotificationIdLocalGetTeamInfo 2006 普通群踢人,{“tinfo”:tinfo,"ids":["a1", "a2"],"uinfos":["uinfo1", "uinfo2"]}
kNIMNotificationIdLocalGetTeamList 2007 本地操作获取群成员信息
kNIMNotificationIdLocalMuteMember 2008 本地操作对群成员禁言
kNIMNotificationIdLocalNetcallReject 3103 拒绝电话(暂不支持),{"calltype":1,"channel":6146078138783760761,"from":"id1","ids":["id1","id2"],"time":1430995380471}
kNIMNotificationIdLocalNetcallNoResponse 3104 无应答,未接通电话(暂不支持),{"calltype":1,"channel":6146078138783760761,"from":"id1","ids":["id1","id2"],"time":1430995380471}
static void RegTeamEventCb(const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
cb 异步通知回调
json_extension 扩展字段,预留
//注册事件监听
nim::Team::RegTeamEventCb([&](const nim::TeamEvent& teamEvent)
{
    ...
});


//不需要时,取消事件监听
nim::Team::RegTeamEventCb(nullptr);

获取群组

NIM SDK 在程序启动时会对本地群信息进行同步,所以只需要调用本地缓存接口获取群就可以了。 SDK 提供了批量获取自己的群接口、以及根据单个群 id 查询的接口。同样 SDK 也提供了远程获取群信息的接口。 类TeamInfo 封装了群信息。

TeamInfo参数说明

类型 参数 说明
string GetTeamID() 群组id
string GetName() 群组名称
NIMTeamType GetType() 群组类型,分高级群和普通群,详见NIMTeamType
string GetOwnerID() 群组的拥有者或创建者
int GetLevel() 群组等级
string GetProperty() 群组属性预留扩展字段,长度限制:6000字符
int IsValid() 此群组是否有效,1为有效,0为无效
int GetMemberCount() 群成员数量
int64_t GetMemberListTimetag() 群成员列表最新更新时间戳(毫秒)
int64_t GetCreateTimetag() 群组创建时间戳(毫秒)
int64_t GetUpdateTimetag() 群信息最新更新时间戳(毫秒)
bool IsMemberValid() 该群的群成员列表是否还有效,1:有效 0: 无效
string GetIntro() 群组简介
string GetAnnouncement() 群公告
NIMTeamJoinMode GetJoinMode() 入群模式,0-不用验证 1-需要验证 2-拒绝所有人入群(仅高级群)
string GetCustom() 第三方扩展字段,仅负责存储和透传
string GetServerCustom() 服务器预留扩展字段(该配置项只能通过服务器接口设置,对客户端只读)(仅高级群)
string GetIcon() 群头像
NIMTeamBeInviteMode GetBeInvitedMode() 被邀请人同意方式,属性本身只有群主管理员可以修改 ,0-需要同意(默认),1-不需要同意(仅高级群)
NIMTeamInviteMode GetInvitedMode() 谁可以邀请他人入群,属性本身只有群主管理员可以修改,0-管理员(默认),1-所有人(仅高级群)
NIMTeamUpdateInfoMode GetUpdateMode() 谁可以修改群资料,属性本身只有群主管理员可以修改,0-管理员(默认),1-所有人(仅高级群)
NIMTeamUpdateCustomMode GetUpdateCustomMode() 谁可以更新群自定义属性,属性本身只有群主管理员可以修改(仅高级群)
bool IsAllMemberMute() 群全员禁言标记 0:未禁言,1:禁言(仅高级群)(暂不支持)

注意:当用户退出群或被踢出群或群解散后,IsMemberValid() 值为false,对于当前用户而言,此群已不再是此用户的有效群。

TeamMemberProperty参数说明

类型 参数 说明
string GetTeamId() 群组id
string GeAccountId() 群成员账号
NIMTeamUserType GeUserType() 群成员类型,详见NIMTeamUserType
int64_t CreatedTimetag() 入群时间戳
int64_t UpdatedTimetag() 群成员信息更新时间戳
bool IsValid() 群成员是否有效,如果已退群等 则为false
string GetNick() 群成员昵称
int64_t GetBits() 配置属性,当前仅用来设置消息提醒,1:提醒 默认为0
string GeCustom() 自定义第三方扩展信息
bool IsMute() 是否禁言,true:禁言,false:取消禁言(默认)

本地获取群列表

SDK最新版本在当用户不在该群组或该群组已经解散时,本地数据库不再清除该缓存的数据,所以同时提供了查询有效群和查询所有群(包含无效群)的接口。

1. 获取有效群信息列表

 static void QueryAllMyTeamsInfoAsync(const QueryAllMyTeamsInfoCallback& cb, const std::string& json_extension = "");
参数 说明
cb 通知结果回调
json_extension 扩展字段,可选,用于查询包含无效群,格式如:{"include_invalid":1},默认查询有效群

//获取群信息列表
nim::Team::QueryAllMyTeamsInfoAsync([&](int count, const std::list<nim::TeamInfo>& list) 
{
    ...
});

//获取所有群信息列表,包括无效群
Json::Value param;
param["include_invalid"] = true;
nim::Team::QueryAllMyTeamsInfoAsync([&](int count, const std::list<nim::TeamInfo>& list) 
{
    ...
},param.toStyledString());

2. 获取本人所在群列表

仅获取本人所在群的群id列表,

 static void QueryAllMyTeamsAsync(const QueryAllMyTeamsCallback& cb, const std::string& json_extension = "");
参数 说明
cb 通知结果回调
json_extension 扩展字段,预留
//获取本人所在群id列表
nim::Team::QueryAllMyTeamsAsync([&](int team_count, const std::list<std::string>& result) 
{

});

获取群信息

SDK提供了同步和异步两个版本来获取本地的群信息,也提供了直接获取云端的群信息的接口。

1. 获取本地群信息(同步版本)

 static TeamInfo QueryTeamInfoBlock(const std::string& tid);
参数 说明
tid 所要获取的群id
//获取本地群信息
std::string tid = "1243354";
TeamInfo tinfo = nim::Team::QueryTeamInfoBlock(tid);

2.获取本地群信息(异步版本)

 static bool QueryTeamInfoAsync(const std::string& tid, const QueryTeamInfoCallback& cb, const std::string& json_extension = "");
参数 说明
tid 所要获取的群id
cb 通知结果回调
json_extension 扩展字段,预留
//获取本地群信息
std::string tid = "1243354";
nim::Team::QueryTeamInfoAsync(tid, [&](const std::string& tid, const nim::TeamInfo& info) 
{
    ...
});

3.获取云端群信息

static bool QueryTeamInfoOnlineAsync(const std::string& tid, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 所要获取的群id
cb 通知结果回调
json_extension 扩展字段,预留
//获取云端群信息
std::string tid = "1243354";
nim::Team::QueryTeamInfoOnlineAsync(tid, [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

获取云端禁言列表

 static bool QueryMuteListOnlineAsync(const std::string& tid, const QueryTeamMembersOnlineCallback& cb, const std::string& json_extension = "");
参数 说明
tid 所要获取的群id
cb 通知结果回调
json_extension 扩展字段,预留
//获取云端的群禁言列表
std::string tid = "1243354";
nim::Team::QueryMuteListOnlineAsync(tid, [&](nim::NIMResCode ret, const std::string& tid, const std::list<nim::TeamMemberProperty>& list)
{
    ...
});

群成员信息

SDK支持获取群成员列表信息,也只吃获取单个群成员的信息。获取单个群成员信息分别提供同步版本和异步版本的接口,以方便开发者调用。

获取群成员列表

SDK支持查询指定群的有效群成员列表,也支持查询已经退出群的本地群成员。

static bool QueryTeamMembersAsync(const std::string& tid, const QueryTeamMembersCallback& cb, const std::string& json_extension = "");
参数 说明
tid 所要获取的群id
cb 通知结果回调
json_extension 扩展字段,可选,用于查询包含无效群成员,格式如:{"include_invalid":1},默认查询有效群
//获取群有效群成员信息
std::string tid = "1243354";
nim::Team::QueryTeamMembersAsync(tid,[this](const std::string& tid, int count, const std::list<nim::TeamMemberProperty>& list)
{
    ...
});

//获取所有群成员列表,包括无效群成员
Json::Value param;
param["include_invalid"] = true;
nim::Team::QueryTeamMembersAsync(tid,[this](const std::string& tid, int count, const std::list<nim::TeamMemberProperty>& list)
{
    ...
},param.toStyledString());

获取群成员信息

1. 获取群成员信息(同步版本)

 static TeamMemberProperty QueryTeamMemberBlock(const std::string& tid, const std::string& id);
参数 说明
tid 所要获取的群id
id 所要获取的群成员id
//获取群成员test1信息
std::string tid = "1243354";
std::string uid = "test1";
NIMTeamMemberInfo tinfo = nim::Team::QueryTeamMemberBlock(tid,uid);

2.获取群成员信息(异步版本)

static bool QueryTeamMemberAsync(const std::string& tid, const std::string& id, const QueryTeamMemberCallback& cb,const std::string& json_extension = "");
参数 说明
tid 所要获取的群id
id 所要获取的群成员id
cb 通知结果回调
json_extension 扩展字段,预留
//获取群成员test1信息
std::string tid = "1243354";
std::string uid = "test1";
nim::Team::QueryTeamMemberAsync(tid,uid,[&](const nim::TeamMemberProperty& member)
{
   ...
});

创建群组

创建群组可分为普通群和高级群,目前版本的高级群覆盖了所有的普通群功能。TeamInfo 包含群组的详细信息,通过设置该对象可以指定群类型,群组权限,群资料等信息;如果设置了 invitation_postscript,会发送给群中的每个成员。

 static bool CreateTeamAsync(const TeamInfo& team_info, const std::list<std::string>& ids, const std::string& invitation_postscript    , const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
team_info 所创建群的基本信息,如群名,群公告等等
ids 创建群组时同时需要加入群的用户账号,不包括自己账号,系统自动会发送邀请给ids所有成员
invitation_postscript 邀请附言信息
cb 通知结果回调
json_extension 扩展字段,预留
//以测试账号test1,test2为例

TeamInfo ti;
ti.SetName("teamName");
ti.SetAnnouncement("群公告");
ti.SetIntro("群简介");
ti.SetType(kNIMTeamTypeAdvanced);

std::list<std::string> members;
members.push_back("test1");
members.push_back("test2");

nim::Team::CreateTeamAsync(ti, members, "邀请附言信息", [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

加入群组

用户可以通过被动接受邀请主动加入两种方式进入群组。

邀请用户入群

请求完成后,如果是普通群,被邀请者将直接入群;如果是高级群,云信服务器会下发一条系统消息到目标用户,目标用户可以选择同意或者拒绝入群。

 static bool InviteAsync(const std::string& tid, const std::list<std::string>& ids, const std::string& invitation_postscript, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
ids 创建群组时同时需要加入群的用户账号,不包括自己账号
invitation_postscript 邀请附言信息,如果不为空,此信息会通知给被邀请的好友
cb 通知结果回调
json_extension 扩展字段,预留
//以测试账号test1,test2为例
std::string tid = "1231232";
std::list<string> ids;
ids.push_back("test1");
ids.push_back("test2");
nim::Team::InviteAsync(tid,ids,"附言信息",[&](const nim::TeamEvent& teamEvent)=>{
    ....
});

注意:普通群需要在邀请好友入群后,同时给这个群发一条消息,好友才会收到邀请通知。

收到通知后,高级群用户可以进行以下操作:

代码示例

//以测试群1231232,邀请者账号testAccount为例
std::string tid = "1231232";
std::string invitor_uid = "testAccount";//填写邀请方的id
nim::Team::AcceptInvitationAsync(tid, invitor_uid, [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

代码示例

//以测试群1231232,邀请者账号testAccount为例
std::string tid = "1231232";
std::string invitor_uid = "testAccount";//填写邀请方的id
nim::Team::RejectInvitationAsync(tid, invitor_uid, "拒绝原因", [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

用户主动申请入群

发送请求后,云信服务器会下发一条系统消息给群管理员,管理员可以选择通过或者拒绝申请。仅高级群支持该功能。

 static bool ApplyJoinAsync(const std::string& tid, const std::string& reason, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
reason 申请附言信息,如果不为空,此信息会通知给被群管理人员
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232为例
std::string tid = "1231232";
nim::Team::ApplyJoinAsync(tid, "申请附言", [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

群管理人员可以进行一下操作:

代码示例:

//以测试群1231232,测试账号test1为例
std::string tid = "1231232";
std::string uid = "test1";//申请者的账号
nim::Team::PassJoinApplyAsync(tid, uid, [&](const nim::TeamEvent& teamEvent)
{
   ...
});

代码示例:

//以测试群1231232,测试账号test1为例
std::string tid = "1231232";
std::string uid = "test1";//申请者的账号
std::string reason = "因为你不够美";//拒绝理由
nim::Team::RejectJoinApplyAsync(tid, uid, reason, [&](const nim::TeamEvent& teamEvent)
{
   ...
});

退出群组

退出群组包括主动退出群组和被动退出。群管理员和群主都拥有踢出群的权限。被踢出群后,会收到系统通知,通过群通知事件通知给用户。

static bool LeaveAsync(const std::string& tid, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232为例
string tid = "1231232";
nim::Team::LeaveAsync(tid, [&](const nim::TeamEvent& teamEvent) 
{
   ...
});

解散群

高级群群主拥有解散群的权限,其他成员均没有此权限。仅高级群支持该功能。

 static bool DismissAsync(const std::string& tid, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232为例
std::string tid = "1231232";
nim::Team::DismissAsync(tid, [&](const nim::TeamEvent& teamEvent) 
{
   ...
});

踢人出群

群主可以踢出任何群成员,高级群管理员可以踢出普通群成员。

static bool KickAsync(const std::string& tid, const std::list<std::string>& ids, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
ids 被踢出的群成员id集合
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232,测试账号test1,test2为例
std::string tid = "1231232";
std::list<std::string> ids;
ids.push_back("test1");
ids.push_back("test2");
nim::Team::KickAsync(tid, ids, [&](const nim::TeamEvent& teamEvent)
{
    ...
});

群成员禁言

支持管理员和群主对普通成员的禁言、解除禁言操作。

static bool MuteMemberAsync(const std::string& tid, const std::string& member_id, bool set_mute, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
member_id 禁言/解除禁言的群成员id
set_mute 是否禁言,true:禁言,false:解除禁言
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232,测试账号test1为例
std::string tid = "1231232";
std::string uid = "test1");
nim::Team::MuteMemberAsync(tid, uid, true, [&](const nim::TeamEvent& teamEvent)
{
    ...
});

编辑群组资料

普通群成员都可以修改群名等信息,高级群只有管理员才有权限修改。

static bool UpdateTeamInfoAsync(const std::string& tid, const TeamInfo& team_info, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
team_info 群信息,只填入需要修改的字段,不需要修改的不填
cb 通知结果回调
json_extension 扩展字段,预留
//以修改群名称为例
std::string tid = "1231232";
TeamInfo ti;
ti.SetName("newTeamName");
ti.SetTeamID(tid);
nim::Team::UpdateTeamInfoAsync(tid,ti,[&](const nim::TeamEvent& teamEvent)
{
    ....
});

修改群成员信息

SDK提供允许管理员修改他人在群内的昵称,也允许用户修改自己在群内的信息

更新本人的群成员资料

群内成员可以修改本人的资料信息。

static bool UpdateMyPropertyAsync(const TeamMemberProperty& prop, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
prop 群信成员息,最好能先通过接口获取本人的完整的群成员信息,然后再将需要修改的字段更新为新的值,TeamIdAccountId字段必填
cb 通知结果回调
json_extension 扩展字段,预留
//以修改群名称为例
std::string tid = "1231232";

//群成员信息最好是先通过接口获取本人的完整的群成员信息,然后再将需要修改的字段更新为新的值,此处仅为示例。
TeamMemberProperty tmi;
tmi.SetTeamID(tid);
tmi.SetNickName("newNick");
tmi.SetAccountID("myUid");  //本人账号;
nim::Team::UpdateMyPropertyAsync(tmi, [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

修改其他成员的群昵称

群管理员和群主可以修改其他成员的群昵称。

static bool UpdateOtherNickAsync(const TeamMemberProperty& prop, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
prop 群成员信息,TeamIdAccountId字段必填,NickName可为空
cb 通知结果回调
json_extension 扩展字段,预留
//以修改群名称为例
std::string tid = "1231232";

//群成员信息最好是先通过接口获取完整的群成员信息,然后再将需要修改的字段更新为新的值,此处仅为示例。
TeamMemberProperty tmi;
tmi.SetTeamID(tid);
tmi.SetNickName("newNick");
tmi.SetAccountID("test1");  //账号;
nim::Team::UpdateMyPropertyAsync(tmi, [&](const nim::TeamEvent& teamEvent) 
{
    ...
});

群组权限管理

SDK提供了对高级群的权限管理功能,仅管理员和群主可以进行操作。可以增加,移除管理员,转让群主等。

添加管理员

ids 中包含的账号全部设置为群管理员

static bool AddManagersAsync(const std::string& tid, const std::list<std::string>& ids, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
ids 群成员账号id集合
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232,测试账号test1,test2为例
std::string tid = "1231232";
std::list<std::string> ids = new string[]();
ids.push_back("test1");
ids.push_back("test2");
nim::Team::AddManagersAsync(tid, ids,[&](const nim::TeamEvent& teamEvent) 
{
    ...
});

移除管理员

managerIdArray 中包含的账号全部移除群管理员身份

static bool RemoveManagersAsync(const std::string& tid, const std::list<std::string>& ids, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
ids 群成员账号id集合
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232,测试账号test1,test2为例
std::string tid = "1231232";
std::list<string> ids = new string[]();
ids.push_back("test1");
ids.push_back("test2");
nim::Team::RemoveManagersAsync(tid, ids,[&](const nim::TeamEvent& teamEvent) 
{
    ...
});

移交群主

将群主转让给其他群成员。is_leave为true时,移交成功后,同时退出本群。

 static bool TransferTeamAsync(const std::string& tid, const std::string& new_owner_id, bool is_leave, const TeamEventCallback& cb, const std::string& json_extension = "");
参数 说明
tid 群id
new_owner_id 新的群主账号id
is_leave 是否移交群主成功后退出该群。true:移交群主并退出该群,false:移交群主但不退出本群
cb 通知结果回调
json_extension 扩展字段,预留
//以测试群1231232,测试账号test1
std::string tid = "1231232";
std::string newOwnerId = "test1";
nim::Team::TransferTeamAsync(tid, newOwnerId,true,[&](const nim::TeamEvent& teamEvent) 
{
    ...
});