群组功能
更新时间: 2024/08/20 15:45:46
群组功能概述
群组功能对应的管理类为 nim::Team
,提供高级群 (Advanced) 形式的群聊功能。高级群拥有丰富的权限操作。
高级群在权限上有更多的限制,权限分为群主、管理员、以及群成员。在添加成员的时候需要对方接受邀请。高级群的群成员资料提供了实时同步功能,并提供了群开关设置字段、第三方扩展字段(仅负责存储和透传)和第三方服务器扩展字段(该配置项只能通过服务器接口设置,对客户端只读)。
- 群操作权限对比
群操作 | 高级群 |
---|---|
邀请成员 | 群主、管理员 |
踢出成员 | 群主、管理员(管理员之间无法互相踢) |
解散群 | 群主 |
退群 | 管理员、普通成员 |
处理入群申请 | 群主、管理员 |
更改自己的群昵称 | 任何人 |
更改他人群昵称 | 群主、管理员 |
更改群名称 | 群主、管理员 |
更改群公告 | 群主、管理员 |
更改群介绍 | 群主、管理员 |
更新验证方式 | 群主、管理员 |
添加(删除)管理员 | 群主 |
移交群主 | 群主 |
成员禁言 | 群主、管理员 |
更新群头像 | 群主、管理员 |
NIMTeamType
枚举说明
枚举 | 值 | 说明 |
---|---|---|
kNIMTeamTypeAdvanced | 1 | 高级群 |
NIMTeamUserType
枚举说明
枚举 | 值 | 说明 |
---|---|---|
kNIMTeamUserTypeNomal | 0 | 普通成员 |
kNIMTeamUserTypeCreator | 1 | 创建者 |
kNIMTeamUserTypeManager | 2 | 管理员 |
kNIMTeamUserTypeApply | 3 | 申请加入用户 |
kNIMTeamUserTypeLocalWaitAccept | 100 | 本地记录等待正在入群的用户 |
群聊消息收发和管理与双人聊天完全相同,仅在消息类型上做了区分,详见消息收发。
接口调用限制
1秒内默认最多可调用本页面所列的群组管理操作接口(如创建群组接口)100次。如需上调上限,请在官网首页通过微信、在线消息或电话等方式咨询商务人员。
群通知事件
- API 介绍
注册该事件监听群信息变更,包括群组的创建、解散、邀请入群、踢出群组等群相关操作的都通过该事件通知给调用者。
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
枚举类型说明
枚举 | 值 | 说明 |
---|---|---|
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 |
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} |
- API 原型
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. 获取有效群信息列表
- API 原型
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. 获取本人所在群列表
- API 介绍
仅获取本人所在群的群id列表,
- API 原型
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. 获取本地群信息(同步版本)
- API 原型
static TeamInfo QueryTeamInfoBlock(const std::string& tid);
- 参数说明
参数 | 说明 |
---|---|
tid | 所要获取的群id |
- 示例
//获取本地群信息
std::string tid = "1243354";
TeamInfo tinfo = nim::Team::QueryTeamInfoBlock(tid);
2.获取本地群信息(异步版本)
- API 原型
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.获取云端群信息
- API 原型
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)
{
...
});
获取云端禁言列表
- API 原型
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支持查询指定群的有效群成员列表,也支持查询已经退出群的本地群成员。
- API 原型
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. 获取群成员信息(同步版本)
- API 原型
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.获取群成员信息(异步版本)
- API 原型
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
,会发送给群中的每个成员。
- API 原型
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)
{
...
});
加入群组
用户可以通过被动接受邀请和主动加入两种方式进入群组。
邀请用户入群
- API 介绍
请求完成后,云信服务器会下发一条系统消息到目标用户,目标用户可以选择同意或者拒绝入群。
- API 原型
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)=>{
....
});
收到通知后,高级群用户可以进行以下操作:
- 同意群邀请(仅限高级群):
static bool AcceptInvitationAsync(const std::string& tid, const std::string& invitor_id,const TeamEventCallback& cb, const std::string& json_extension = "";
代码示例
//以测试群1231232,邀请者账号testAccount为例
std::string tid = "1231232";
std::string invitor_uid = "testAccount";//填写邀请方的id
nim::Team::AcceptInvitationAsync(tid, invitor_uid, [&](const nim::TeamEvent& teamEvent)
{
...
});
- 拒绝群邀请(仅限高级群):
static bool RejectInvitationAsync(const std::string& tid, const std::string& invitor_id,const std::string& reason, const TeamEventCallback& cb, const std::string& json_extension = "";
代码示例
//以测试群1231232,邀请者账号testAccount为例
std::string tid = "1231232";
std::string invitor_uid = "testAccount";//填写邀请方的id
nim::Team::RejectInvitationAsync(tid, invitor_uid, "拒绝原因", [&](const nim::TeamEvent& teamEvent)
{
...
});
用户主动申请入群
- API 介绍
发送请求后,云信服务器会下发一条系统消息给群管理员,管理员可以选择通过或者拒绝申请。仅高级群支持该功能。
- API 原型
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)
{
...
});
群管理人员可以进行一下操作:
- 通过申请(仅限高级群):
static bool PassJoinApplyAsync(const std::string& tid, const std::string& applicant_id, const TeamEventCallback& cb, const std::string& json_extension = "";
代码示例:
//以测试群1231232,测试账号test1为例
std::string tid = "1231232";
std::string uid = "test1";//申请者的账号
nim::Team::PassJoinApplyAsync(tid, uid, [&](const nim::TeamEvent& teamEvent)
{
...
});
- 拒绝申请(仅限高级群):
bool RejectJoinApplyAsync(const std::string& tid, const std::string& applicant_id, const std::string& reason, const TeamEventCallback& cb, const std::string& json_extension = "");
代码示例:
//以测试群1231232,测试账号test1为例
std::string tid = "1231232";
std::string uid = "test1";//申请者的账号
std::string reason = "因为你不够美";//拒绝理由
nim::Team::RejectJoinApplyAsync(tid, uid, reason, [&](const nim::TeamEvent& teamEvent)
{
...
});
退出群组
退出群组包括主动退出群组和被动退出。群管理员和群主都拥有踢出群的权限。被踢出群后,会收到系统通知,通过群通知事件通知给用户。
- API 原型
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)
{
...
});
解散群
高级群群主拥有解散群的权限,其他成员均没有此权限。仅高级群支持该功能。
- API 原型
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)
{
...
});
踢人出群
群主可以踢出任何群成员,高级群管理员可以踢出普通成员。
- API 原型
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)
{
...
});
群成员禁言
支持管理员和群主对普通成员的禁言、解除禁言操作。
- API 原型
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)
{
...
});
编辑群组资料
- API 介绍
普通成员都可以修改群名等信息,高级群只有管理员才有权限修改。
- API 原型
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提供允许管理员修改他人在群内的昵称,也允许用户修改自己在群内的信息
更新本人的群成员资料
- API 介绍
群内成员可以修改本人的资料信息。
- API 原型
static bool UpdateMyPropertyAsync(const TeamMemberProperty& prop, const TeamEventCallback& cb, const std::string& json_extension = "");
- 参数说明
参数 | 说明 |
---|---|
prop | 群信成员息,最好能先通过接口获取本人的完整的群成员信息,然后再将需要修改的字段更新为新的值,TeamId 、AccountId 字段必填 |
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)
{
...
});
修改其他成员的群昵称
- API 介绍
群管理员和群主可以修改其他成员的群昵称。
- API 原型
static bool UpdateOtherNickAsync(const TeamMemberProperty& prop, const TeamEventCallback& cb, const std::string& json_extension = "");
- 参数说明
参数 | 说明 |
---|---|
prop | 群成员信息,TeamId 、AccountId 字段必填,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提供了对高级群的权限管理功能,仅管理员和群主可以进行操作。可以增加,移除管理员,转让群主等。
添加管理员
- API 介绍
将 ids
中包含的账号全部设置为群管理员
- API 原型
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)
{
...
});
移除管理员
- API 介绍
将 managerIdArray
中包含的账号全部移除群管理员身份
- API 原型
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)
{
...
});
移交群主
- API 介绍
将群主转让给其他群成员。is_leave
为true时,移交成功后,同时退出本群。
- API 原型
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)
{
...
});