群组操作

创建群组

我们假设Tony要创建一个名为"出彩中国人"的群组,具体代码如下: 
  • unsigned int matchKey = 0;
  • int CreateGroup(&matchKey, "出彩中国人", 1, "北京","北京",1,
  •  "群公告", 1,2,"备注",0);
  • 结果回调:
  • void OnCreateGroup(unsigned int matchKey,int reason, ECGroupDetailInfo *pInfo);

主动加入

只要知道群组id,就可以主动加入群组。 
1、我们假设"出彩中国人"群组已经有Tony和John两位成员,现在Smith要加入"出彩中国人"群组,则代码如下: 
  • unsigned int matchKey = 0;
  • JoinGroup(&matchKey, “出彩中国人id”, “加入群组的理由”);
  • 结果回调接口:
  • void OnJoinGroup(unsigned int matchKey,int reason,constchar* groupid);
注意:
如果群组"出彩中国人"是公开群组,则smith直接被允许加入。如果群组"出彩中国人"是私有群组, 则smith加入需要群主Tony的的同意。 Tony首先收到mith加入的请求,代码如下: 
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }}
Tony同意Smith加入的请求,代码如下: 
  • unsigned int matchKey = 0;
  • ReplyRequestJoinGroup(&matchKey, pMemberJoinMsg ->groupId, pMemberJoinMsg->member,2);
  • 结果回调:
  • void OnReplyRequestJoinGroup(unsigned ivoid OnReplyRequestJoinGroup(unsigned int matchKey, int reason,const char;
2、Smith加入成功后,群组中成员Tony和John收到的通知回调方法代码如下:
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }}

邀请加入

 只能群主邀请别人加入。
1、我们假设"出彩中国人"群组的创建者Tony邀请Smith加入群组,则代码如下:
  • unsigned int matchKey = 0;
  • int nRet = InviteJoinGroup(&matchKey,”出彩的中国人”,nullptr,members,memberCount,1);
  • 结果回调:
  • void OnInviteJoinGroup(unsigned int matchKey, int reason,const char* groupid,const char** members,int membercount,int confirm);
注意:
如果Tony邀请Smith加入的时候,接口参数不指定加入需要Smith确认,则smith直接被邀请加入。如果指定需要Smith 同意才能加入,则Smith收到如下通知回调,并在回调里面回复"同意"或"拒绝"加入。代码如下:
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }}
2、Smith加入成功后,群组中成员Tony和John收到的通知回调方法代码如下:
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }}

退出群组

1、我们假设Smith要退出群组,则代码如下: 
  • unsigned int matchKey = 0;
  • int nRet = QuitGroup(&matchKey, “出彩的中国人ID”)
  • 结果回调:
  • void OnQuitGroup(unsigned int matchKey, int reason,constchar* groupid);
2、Smith退出成功后,群组中成员Tony和John收到的通知回调方法代码如下:
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }
  • }

群主踢人 

1、我们假设群主Tony要把Smith踢出群组,则代码如下: 1、我们假设群主Tony要把Smith踢出群组,则代码如下: 
  • unsigned int matchKey = 0;
  • int nRet = DeleteGroupMember (&matchKey, “出彩的中国人ID”,”Smith”)
  • 结果回调:
  • void OnDeleteGroupMember(unsigned int matchKey, int reason,const char* belong,const char* member);
2、群组中所有成员都会收到的Smith被踢的消息,包括Smith自己,Smith判断被踢用户的id等于自己, 则从本地删除群组,此通知回调方法代码如下:
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  } 
  •  break;  
  •  case NTInviteJoinGroup: 
  •  ....... }}

解散群组

 只有群主才能解散群组。 
1、我们假设群主Tony要解散"出彩中国人",则代码如下: 
  • unsigned int matchKey = 0;
  • int nRet = DismissGroup (&matchKey, “出彩的中国人ID”);
  • 结果回调:
  • void OnDismissGroup(unsigned int matchKey, int reason,const char* groupid);
2、群组中所有成员收到的通知回调方法代码如下: 
  • void OnReceiveGroupNoticeMessage(const ECGroupNoticeMessage * pMsg)
  • {
  •  switch(pMsg->notice)
  •  {
  •  case NTRequestJoinGroup:
  •  if( Global::m_pMain )
  •  {
  •  Global::m_pMain->MemberReceiveRequestJoinGroupNoticeMsgResult((ECRequestJoinGroupNtyMsg*)pMsg->pNoticeMsg);
  •  }
  •  break;  
  •  case NTInviteJoinGroup: 
  • .......
  •  }}

获取群详情

  • unsigned int matchKey = 0;
  • int nRet = QueryGroupDetail (&matchKey, “出彩的中国人ID”);
  • 结果回调:
  • void OnQueryGroupDetail(unsigned int matchKey, int reason, ECGroupDetailInfo *detail);

获取群成员

  • unsigned int matchKey = 0;
  • int nRet = QueryGroupMember (&matchKey, “出彩的中国人ID”,””,50);
  • 结果回调:
  • void OnQueryGroupMember(unsigned int matchKey, int reason, const char *groupid,int count,ECGroupMember *member);

群组搜索

可以根据群组名字或者群组ID来搜索群组,代码如下:
  • unsigned int matchKey = 0;
  • int nRet = SearchPublicGroups (&matchKey,2, “中国人”);
  • 结果回调:
  • void OnSearchPublicGroup(unsigned int matchKey,int reason, int searchType,constchar* keyword,int count,ECGroupSearchInfo *group);

群组免打扰

群组免打扰功能是指群组收到消息的时候,是否震动手机或振铃(震动或振铃是在应用层处理,通过sdk可以设置此状态并保存在服务端,切换手机时,群组的状态也可同步)。其示例代码如下: 
  • unsigned int matchKey = 0;
  • SetGroupMessageRule(&matchKey, “中国人群组id”, false);
  • 结果回调:
  • void OnSetGroupMessageRule(unsigned int matchKey, int reason,const char* groupid, bool notice);

获取个人所在的群组

用户登录后,通常首先调取此接口获取自己所在群组,此接口会返回群组的id、名称、免打扰状态等信息,其示例代码如下:
  • unsigned int matchKey = 0;
  • int nRet = QueryOwnGroup (&matchKey,””,50,2);
  • 结果回调:
  • void OnQueryOwnGroup(unsigned int matchKey,int reason, int count,ECGroupSimpleInfo *group);

设置群组成员权限

用户在群组中可以设置管理员、转让群主:
  • unsigned int matchKey = 0;
  • SetGroupMemberRole(&matchKey, groupId, member, role);//role:成员权限  1: 群主 2:管理员 3:成员
  • 结果回调:
  • void OnSetGroupMemberRole(unsigned int matchKey, int reason);

群组@成员

用户在群组中可以@群的其他成员:消息类型为11
  • unsigned int matchKey = 0;
  • ret = SendTextMessageEX(&matchKey,receiver , msgText, Msg_Type_GroupAt, NULL, msgId, jsonString);//jsonString格式为{"at":["111","222"]},111,222是被@的成员
  • 结果回调:
  • void OnReceiveMessage(ECMessage *pMsg);