Android

群组相关

更新时间: 2024/03/14 16:36:35

如何判断账号是否为某群成员?

Android

根据群 ID 和账号查询群成员信息,下例为异步接口,如果本地群成员资料已过期,SDK 会去服务器获取最新资料。实现onResult回调,如果查询成功,表示账号为该群成员,会返回成员信息。

NIMClient.getService(TeamService.class).queryMemberList(teamId).setCallback(new RequestCallbackWrapper<List<TeamMember>>() {
    @Override
    public void onResult(int code, final List<TeamMember> members, Throwable exception) { ... }
});
iOS

调用 –fetchTeamMembers:completion: 接口获取群成员,在获取到的成员列表中查看是否有指定成员。

Windows/macOS

调用 nim_team_query_team_members_async (const char *tid, bool include_user_info, const char *json_extension, nim_team_query_team_members_cb_func cb, const void *user_data)接口查询群成员,在回调函数nim_team_query_team_members_cb_func) (const char *tid, int member_count, bool include_user_info, const char *result, const char *json_extension, const void *user_data)中解析群成员 id json,通过kNIMTeamUserKeyValidFlag字段判断该成员目前是否还在群里。

Web

调用 nim.getTeamMembers(options) 接口获取群成员,option中传入群 ID 和结果回调函数,获取成功时回调获得群成员列表。

关于群组的注意事项

  • 关于创建群组时的成员数量

    创建普通群时,至少要传入两个成员账号,否则会返回错误代码 414。
    创建高级群时,可以只传入群主自己的账号(members对象填owner),稍后再邀请其他用户。

  • 关于创建群组返回 414

    建议可以检查下各个传参是否正确,例如:群名称长度,群名称最大 64 个字符,超过也会报 414。

  • 调用IM SDK主动退群接口,返回 802

    高级群的群主不能直接退群,可以先转让群再退群,或者直接解散群。

  • 普通群获取群成员,返回 802

    可能原因包含但不限于:普通群刚加入的新成员是处于未激活状态的(暂不属于该群),当收到群内消息后,该新成员会自动激活,激活后才可以调用「获取群成员」的接口。

  • 发送群消息,返回 802
    • 发消息的用户不在群里面。
    • 用户被禁言了,您可以调用服务端的 API 查看该用户是否在禁言列表中,获取群组禁言列表
  • 调用IM服务端API解散群,返回 414

    可能原因包含但不限于:如果群主账号被封禁后,再调用服务端API解散群,会返回{"desc": "check accid001", "code": 414}

  • 接受入群邀请返回 807

    调用acceptInvite(String teamId, String inviter)方法,必须要先触发邀请的动作,返回 807 是由于没有触发邀请动作而导致。

关于群组的数量限制

  • 创建群数量
    • 对于高级群:
      • 免费版每个accid可创建50个高级群。
      • 专业版每个accid默认可创建100个高级群(可联系商务顾问升级扩展)。
      • 已解散的群不占用数量。
    • 对于普通群:免费版和专业版都没有创建普通群的数量限制,但是受加入群数量的限制。另外普通群功能受限,具体请点此查看
  • 加入群数量

    每个accid可以加入的群数量上限为5000个。

  • 群最高人数(群容量)

    每个群的人数上限默认为200人,专业版可联系商务顾问升级扩展。
    [注意1] 升级扩展前创建的群,人数上限仍然是200。如需更改高级群支持的人数上限,可以通过IM服务端API「编辑群资料」https://api.netease.im/nimserver/team/update.action,指定参数teamMemberLimit表示群人数上限。
    [注意2] 各端获取群最高人数的方法:

    • Server:调用https://api.netease.im/nimserver/team/queryDetail.action「获取群组详细信息」返回的maxusers字段。
    • 客户端SDK: Android: TeamgetMemberLimit()方法,iOS: NIMTeamlevel字段,Web: 群对象的level字段。

    [注意3] 如果「单次邀请进群人数」大于「群最高人数」减去「群内已有人数」时,会返回错误码801,该次邀请的账号全都无法入群。

  • 群管理员人数

    受「群最高人数」限制。

IM SDK怎么设置高级群的加入验证模式、邀请模式、被邀请模式 可以在创建高级群的时候设置,或者编辑群资料时修改设置。以下为SDK设置和修改方法。Server设置和修改方法,具体请点此查看
[注意] 「加入验证模式」只对「主动申请加入群组」有效,「邀请用户加入群组」不受此属性影响。

  • Windows (C)

  • Android

  • iOS

  • Web

    • 调用nim_team_create_team_async创建群组时,传入的team_info为群组信息Json Keys,其中:
      • 通过kNIMTeamInfoKeyJoinMode = "join_mode"指定主动申请加入群组时的验证模式NIMTeamJoinMode,默认为kNIMTeamJoinModeNoAuth = 0不需要验证
      • 通过kNIMTeamInfoKeyInviteMode = "invite_mode"指定邀请模式NIMTeamInviteMode(谁可以邀请他人入群),默认为kNIMTeamInviteModeManager = 0管理员
      • 通过kNIMTeamInfoKeyBeInviteMode = "be_invite_mode"指定被邀请模式NIMTeamBeInviteMode,默认为kNIMTeamBeInviteModeNeedAgree = 0需要同意
    • 调用nim_team_update_team_info_async编辑群组资料时,传入的json_info为群组信息Json Keys,可以修改相应设置。
    • 调用NIMClient.getService(TeamService.class).createTeam(Map<TeamFieldEnum, Serializable> fields, TeamTypeEnum type, String postscript, List<String> members)创建群组时,指定TeamFieldEnum的:
      • VerifyTypeEnum主动申请加入群组时的验证模式 (Free不需要验证,Apply需要验证,Private不允许加入)
      • InviteMode邀请模式 (谁可以邀请他人入群,Manager仅管理员,All所有人)
      • BeInviteMode被邀请模式 (NeedAuth需要同意,NoAuth不需要同意)
    • 调用NIMClient.getService(TeamService.class).updateTeam(teamId, TeamFieldEnum field, value)编辑群组资料时,可以修改相应设置。
    • 调用-createTeam:users:completion:创建群组时,通过NIMCreateTeamOption指定:
      • joinMode主动申请加入群组时的验证模式NIMTeamJoinMode (NIMTeamJoinModeNoAuth = 0默认不需要验证,NIMTeamJoinModeNeedAuth = 1需要验证,NIMTeamJoinModeRejectAll = 2不允许任何人加入)
      • inviteMode邀请模式NIMTeamInviteMode (谁可以邀请他人入群,NIMTeamInviteModeManager = 0默认仅管理员/群主,NIMTeamInviteModeAll = 1所有人)
      • beInviteMode被邀请模式NIMTeamBeInviteMode (NIMTeamBeInviteModeNeedAuth = 0默认需要同意,NIMTeamBeInviteModeNoAuth = 1不需要同意)
    • 通过-updateTeamJoinMode:teamId:completion:修改验证模式
      通过-updateTeamInviteMode:teamId:completion:修改邀请模式
      通过-updateTeamBeInviteMode:teamId:completion:修改被邀请模式
    • 通过nim.createTeam(options)创建群时,在options中指定:
      • joinMode主动申请加入群组时的验证模式 ('needVerify'默认需要验证,'noVerify'不需要验证,'rejectAll'不允许任何人加入)
      • inviteMode邀请模式 (谁可以邀请他人入群,'manager'默认仅管理员/群主,'all'所有人)
      • beInviteMode被邀请模式 ('needVerify'默认需要同意,'noVerify'不需要同意)
    • 通过nim.updateTeam(options)更新群时,可以修改相应设置。

    怎么置空群公告 群公告是String类型,如需置空,应通过相关接口传入空字符串。

  • Server

  • Windows (C)

  • Android

  • iOS

  • Web

  • 通过接口https://api.netease.im/nimserver/team/update.action编辑群资料,设置announcement参数为空字符串。
    [注意] IM Server API只能操作高级群,普通群请通过SDK接口操作。

  • 通过接口nim_team_update_team_info_async编辑群组资料,传入的json_info为群组信息Json Keys,其中kNIMTeamInfoKeyAnnouncement = "announcement"表示群公告,设置为空字符串,例如:values[kNIMTeamInfoKeyAnnouncement] = ""

    • 通过接口NIMClient.getService(TeamService.class).updateTeam(teamId, TeamFieldEnum.Announcement, announcement)编辑群组资料更新群公告:String announcement = ""
    • 或者通过接口NIMClient.getService(TeamService.class).updateTeamFields(teamId, fieldsMap)批量更新群组资料,设置TeamFieldEnum.Announcement为空字符串:fieldsMap.put(TeamFieldEnum.Announcement, "")
  • 通过接口-updateTeamAnnouncement:teamId:completion:更新群公告时,announcement参数传入空字符串。

  • 通过接口nim.updateTeam(options)更新群时,在options中设置announcement字段为空字符串:nim.updateTeam({..., announcement: '', ...})

怎么设置群组的扩展字段 [注意1] 对于群组的服务端扩展字段,只有高级群才有服务端扩展字段,而且只能通过服务端API设置,客户端只能读取。
[注意2] 群组的客户端扩展字段可以同步到其它端。
[注意3] 客户端设置的群组扩展字段,服务端无法修改。
以下为设置群组扩展字段的方法。获取群组扩展字段的方法,请点此查看

  • Server

  • Windows (C)

  • Android

  • iOS

  • Web

  • 调用以下接口时,传入custom字段设置高级群的服务端扩展字段。

    • 创建高级群:https://api.netease.im/nimserver/team/create.action
    • 编辑高级群资料:https://api.netease.im/nimserver/team/update.action
  • 调用以下接口时,通过群组信息Json Keys中,kNIMTeamInfoKeyCustom = "custom"字段设置群组的客户端扩展字段。

    • 创建群组:nim_team_create_team_async
    • 编辑群组资料:nim_team_update_team_info_async
  • 调用以下接口时,通过TeamFieldEnum中,Extension字段设置群组的客户端扩展字段。

    • 创建群组:NIMClient.getService(TeamService.class).createTeam(Map<TeamFieldEnum, Serializable> fields, TeamTypeEnum type, String postscript, List<String> members);
    • 更新群组客户端扩展:NIMClient.getService(TeamService.class).updateTeam(teamId, TeamFieldEnum.Extension, extension)
    • 批量更新群组资料:NIMClient.getService(TeamService.class).updateTeamFields(teamId, fieldsMap)
    • 调用–createTeam:users:completion:创建群组时,通过NIMCreateTeamOptionclientCustomInfo字段设置群组的客户端扩展字段。
    • 调用–updateTeamCustomInfo:teamId:completion:更新群组的客户端扩展字段。
  • 调用nim.createTeam({..., custom: 'custom', ...})创建群,或者调用nim.updateTeam({..., custom: 'custom', ...})更新群时,通过custom字段设置群组的客户端扩展字段。

怎么获取群组的扩展字段 以下为获取群组扩展字段的方法。设置群组扩展字段的方法,请点此查看

  • Server

  • Windows (C)

  • Android

  • iOS

  • Web

  • 调用高级群信息与成员列表查询接口https://api.netease.im/nimserver/team/query.action时,custom字段表示高级群的服务端扩展字段,clientCustom字段表示高级群的客户端扩展字段。

  • 调用以下接口时,群组信息Json Keys中,kNIMTeamInfoKeyServerCustom = "server_custom"表示高级群的服务端扩展字段,kNIMTeamInfoKeyCustom = "custom"表示群组的客户端扩展字段。

    • 本地获取群组信息:nim_team_query_all_my_teams_info_async
    • 从服务器上获取群组信息:nim_team_query_team_info_online_async
  • 调用以下接口时,TeamFieldEnum中,Ext_Server表示高级群的服务端扩展字段,Extension表示群组的客户端扩展字段。

    • 获取自己加入的所有群组(异步版本):NIMClient.getService(TeamService.class).queryTeamList()
    • 获取自己加入的所有群组(同步版本):NIMClient.getService(TeamService.class).queryTeamListBlock()
    • 根据类型获取自己加入的所有群组(异步版本):NIMClient.getService(TeamService.class).queryTeamListByType(TeamTypeEnum type)
    • 根据类型获取自己加入的所有群组(同步版本):NIMClient.getService(TeamService.class).queryTeamListByTypeBlock(TeamTypeEnum type)
    • 从本地数据库中查询群资料(异步版本):NIMClient.getService(TeamService.class).queryTeam(teamId)
    • 从本地数据库中查询群资料(同步版本):NIMClient.getService(TeamService.class).queryTeamBlock(teamId)
    • 从服务器上查询群资料:NIMClient.getService(TeamService.class).searchTeam(teamId)
  • 调用以下接口时,NIMTeam对象的serverCustomInfo属性表示高级群服务端扩展字段,clientCustomInfo属性表示群组的客户端扩展字段。

    • 本地获取所有群组:–allMyTeams
    • 本地根据群Id获取群组:-teamById:
    • 从服务器获取群组:–fetchTeamInfo:completion:
  • 调用以下接口时,回调函数中Team对象的serverCustom属性表示高级群的服务器扩展字段,custom属性表示群的客户端扩展字段。

    • 获取群资料:nim.getTeam({teamId: aTeamId, done: getTeamDone})
    • 获取群列表:nim.getTeams({done: getTeamsDone})

    [注意] getTeam接口,不论用户是否在群里,都可以从云端获取到最新的资料。

    怎么设置和获取群成员的扩展字段

  • Server

  • Windows (C)

  • Android

  • iOS

  • Web

    • 设置群成员的扩展字段
      通过https://api.netease.im/nimserver/team/updateTeamNick.action修改群昵称时,custom表示群成员的扩展字段。
    • 获取群成员的扩展字段
      通过https://api.netease.im/nimserver/team/queryDetail.action查询返回的信息,携带custom群成员扩展字段。
    • 设置群成员的扩展字段
      调用nim_team_update_my_property_async更新自己的群属性,其中参数info表示群组成员信息的json string,包含群组tidkNIMTeamUserKeyCustom = "custom"群成员的扩展字段。
    • 获取群成员的扩展字段
      调用以下接口时,回调函数中result包含群成员信息json string。
      • nim_team_query_team_members_async查询群成员(配置include_user_infotrue时)
      • nim_team_query_team_member_async查询单个群成员信息
    • 设置群成员的扩展字段
      调用NIMClient.getService(TeamService.class).updateMyMemberExtension(String teamId, Map<String, Object> extension)修改自己的群成员扩展字段。
    • 获取群成员的扩展字段
      调用以下接口时,通过TeamMembergetExtension()方法获取群成员的扩展字段。
      • NIMClient.getService(TeamService.class).queryMemberList(teamId).setCallback(...)获取群组所有成员
      • NIMClient.getService(TeamService.class).queryTeamMember(teamId, account).setCallback(...)异步查询查询群成员资料
      • NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, account)同步查询群成员资料
    • 设置群成员的扩展字段
      调用-updateMyCustomInfo:inTeam:completion:更新自己的群成员扩展字段。
    • 获取群成员的扩展字段
      调用–fetchTeamMembers:completion:获取群成员时,通过回调的NIMTeamMember对象的customInfo属性获取群成员扩展字段。
    • 设置群成员的扩展字段
      通过nim.updateInfoInTeam({teamId: theTeamId, custom: '{json}', ...});修改自己的群成员扩展字段。

    • 获取群成员的扩展字段
      通过nim.getTeamMembers({teamId: theTeamId, done: getTeamMembersDone})获取群成员时,回调的TeamMember对象的custom属性获取群成员的扩展字段。

      IM服务端API怎么设置高级群的加入验证模式、邀请模式、被邀请模式 [注意1] IM客户端SDK也可以设置和修改,具体请点此查看
      [注意2] joinmode只对「主动申请加入群组」有效,「邀请用户加入群组」不受此属性影响。
      以下为IM Server API的设置和修改方法。

  • 调用https://api.netease.im/nimserver/team/create.action创建高级群时:

    • 通过参数joinmode指定主动申请加入群组时的验证模式 (0不需要验证,1需要验证,2不允许任何人加入)
    • 通过参数invitemode指定邀请模式 (谁可以邀请他人入群,0默认为管理员,1所有人)
    • 通过参数beinvitemode指定被邀请模式 (0默认需要同意,1不需要同意)
  • 调用https://api.netease.im/nimserver/team/update.action编辑群资料时,可以修改相应设置。

关于IM服务端API 群组功能(高级群) 部分接口的说明

  • 调用IM服务端API群组功能(高级群)相关接口返回{"desc": "no support", "code":403}

    可能原因:

    • IM服务端API [群组功能(高级群)] 相关接口只适用于高级群,不适用于普通群/讨论组。如果需要操作普通群/讨论组,请通过客户端SDK接口进行。
    • 该Appkey下是否有这个群组。
  • 通过IM服务端API创建群并邀请了群成员,但是查询群成员列表只有群主自己

    通过IM服务端APIhttps://api.netease.im/nimserver/team/create.action创建群时,参数magree表示是否需要邀请人同意。如果配置为1表示需要被邀请人同意才可以加入群。因此,只有当被邀请人同意之后才会出现在群成员列表中。

  • 关于IM服务端API [获取群组详细信息] 返回的部分参数的说明

    IM服务端API https://api.netease.im/nimserver/team/queryDetail.action获取群组详细信息,返回的下列参数:

    • createtime:表示该成员加入该群的时间
    • updatetime:表示该成员相关属性最近一次发生变化的时间,例如:群成员昵称、群成员类型变化等。
    • members: 表示除创建者(owner)和管理员(admins)之外的其余群成员列表,是无序的(没有特定的排序规则)。

    为什么主动退群、被踢、解散群之后无法删除相应群组会话? IM SDK在主动退群、被踢、解散群之后,会收到一条相应类型的群组通知,相关会话信息仍会保留,只是此后不再接收关于此群的消息。
    如果在收到相应的群组通知之前将会话删除,则收到群组通知后,SDK会重建对应会话。因此,若需彻底删除群组会话,正确时机是收到相应类型的群组通知之后
    [注意] 删除会话,请参考:怎么删除最近会话
    [注意] 删除会话并不会自动删除会话对应的历史消息,如需删除历史消息,请参考:IM怎么删除消息IM怎么清空消息
    下列内容为处理相关群组通知的介绍。

  • Windows (C)

  • Android

  • iOS

  • Web

  • 通过nim_team_reg_team_event_cb注册全局回调函数nim_team_event_cb_func来接收群组通知,回调的notification_id(通知类型)由nim_msglog_def.h中的NIMNotificationId枚举定义。

  • Android群组通知是消息类型为notificationIMMessage,带有一个消息附件,通知类型由NotificationType枚举定义。

    • 通过IMMessagegetMsgType()方法获取消息类型;
    • 通过IMMessagegetAttachment()方法得到消息附件对象,将其强转为NotificationAttachment,再通过其getType()方法获取通知类型。
    • 通过IMMessagegetFromAccount()方法获取操作者;
    • 通过IMMessagegetSessionId()方法获取群id。

    另外,具体的通知类型和附件类型为:

    • 主动退群的通知类型为:LeaveTeam
    • 被踢的通知类型为:KickMember,附件类型为:MemberChangeAttachment(通过IMMessagegetAttachment()方法强转为MemberChangeAttachment,再通过其getTargets()方法得到被踢成员的List。)
    • 解散群的通知类型为:DismissTeam
  • iOS群组通知类型可以通过NIMTeamNotificationContentoperationType解析(通知类型由NIMTeamOperationType枚举定义)。
    群组通知的解析步骤,请查阅开发指南,文档路径:文档首页 > IM > SDK开发集成 > iOS开发集成 > 群组功能 > 群组通知。

  • 群通知消息是消息类型的一种,群通知消息对应的消息对象的attach字段中,type字段表示群通知消息的类型。
    群通知消息的解析步骤,请查阅开发指南,文档路径:文档首页 > IM > SDK开发集成 > Web开发集成 > 消息收发 > 群通知消息。

    • 主动退群后,会收到一条类型为'leaveTeam'的群通知消息。其中from字段表示退群者的帐号,to字段表示群ID,attachteam表示对应的群对象。
    • 被踢后,会收到一条类型为'removeTeamMembers'的群通知消息。其中from字段表示踢人者的帐号,to字段表示群ID,attachteam表示对应的群对象,accounts表示被踢者的帐号列表。
    • 解散群后,会收到一条类型为'dismissTeam'的群通知消息。其中from字段表示解散者的帐号,to字段表示群ID。

    关于群组禁言 [注意1] 群组相关禁言分为:账号全局禁言、群整体禁言、单个群成员禁言。三种禁言方式相互独立。例如,某账号加入某高级群后,先后被全局禁言、群整体禁言、单个群成员禁言,那么需要分别解除三种禁言后才能恢复在该群发言。
    [注意2] 即使群成员被禁言,仍然可以调用服务端API通过该成员账号发送群消息。

  • Server

  • Windows

  • Android

  • iOS

  • Web

    • 调用「账号全局禁言」接口https://api.netease.im/nimserver/user/mute.action设置或取消账号的全局禁言状态。
      账号被设置为全局禁言后,不能发送任何消息(包含点对点、群、聊天室消息)。
    • 调用「将群组整体禁言」接口https://api.netease.im/nimserver/team/muteTlistAll.action设置或解除群组禁言。
      参数mutemuteType至少提供一个,都提供时以mute为准。如果mute设置为true,只禁言普通成员。
      [注意] 如果muteType传入3,表示禁言整个群(包括群主)。这种情况下如果SDK/客户端再尝试调用禁言接口,会返回802。
    • 调用「禁言群成员」接口https://api.netease.im/nimserver/team/muteTlist.action禁言或解禁群成员。
      需要传入高级群群主的accid,可以禁言管理员和普通成员。
    • C: 调用nim_team_mute_async对群整体禁言/解禁,调用nim_team_mute_member_async对群成员禁言/解禁。
    • C++: 调用nim::Team::MuteAsync对群整体禁言/解禁,调用nim::Team::MuteMemberAsync对群成员禁言/解禁。
    • C#: 调用NIM.Team.TeamAPI.MuteTeam对群整体禁言/解禁,调用NIM.Team.TeamAPI.SetMemberMuted对群成员禁言/解禁。
    • 调用NIMClient.getService(TeamService.class).muteAllTeamMember(teamId, true/false))对群整体禁言/解禁。群主和管理员有权操作。
    • 调用NIMClient.getService(TeamService.class).muteTeamMember(teamId, accid, true/false).setCallback(new RequestCallback<Void>() {...}对群成员禁言。群主和管理员可以对普通成员禁言/解禁。
    • 调用–updateMuteState:inTeam:completion:禁言或解禁全体普通成员。仅高级群群主有权操作。
    • 调用–updateMuteState:userId:inTeam:completion:禁言或解禁单个群成员。高级群群主和管理员有权操作,并且群主可以禁言管理员。
    • 调用nim.muteTeamAll({teamId: 'teamId', type: 'type', done: muteTeamAllDone})对群整体禁言/解禁。参数type传入normal表示对普通群成员禁言,传入none表示解禁。仅群主有权操作。
    • 调用nim.updateMuteStateInTeam({teamId: 'teamId', account: 'accid', mute: true/false, done: updateMuteStateInTeamDone})对单个群成员禁言(mute:true)/解禁(mute:false)。

关于群消息提醒类型 群消息提醒类型分为:该群全部消息都提醒、该群全部消息不提醒、该群仅管理员消息提醒(普通群不支持设置仅管理员消息提醒)。
[注意] 即使设置为不提醒,仍然不影响消息接收以及未读数变化。

  • Windows

  • Android

  • iOS

  • Web

    • 设置:关键参数为nim_team_def.h中定义的kNIMTeamUserKeyBitsNIMTeamBitsConfigMask
      kNIMTeamUserKeyBits0表示全部提醒,为1表示全部不提醒,为2表示仅管理员消息提醒。
      也可以通过NIMTeamBitsConfigMask中的枚举kNIMTeamBitsConfigMaskMuteNotifykNIMTeamBitsConfigMaskOnlyAdmin进行位操作得出上述值。
      • C: nim_team_update_my_property_async,参数info中传入kNIMTeamUserKeyBits("bits", init)字段表示群成员信息。
      • C++: nim::Team::UpdateMyPropertyAsync,参数TeamMemberProperty & prop表示群成员属性,通过其SetBits方法设置群消息提醒类型。
      • C#: NIM.Team.TeamAPI.UpdateMyTeamProperty,参数NIMTeamMemberInfo info表示群成员信息。
        [注意] C#仅支持全部提醒和全部不提醒两种类型。
    • 查询:通过群组成员接口,「获取群成员列表」或者「查询单个群成员信息」,返回的群成员信息中,包含设置的群消息提醒类型。
    • 设置:NIMClient.getService(TeamService.class).muteTeam(teamId, type).setCallback(...),参数type表示群消息提醒类型(All表示全部提醒,Mute表示全部不提醒,Manager表示仅管理员消息提醒)。
    • 查询:Team对象的getMessageNotifyType()方法。
    • 设置:通过NIMTeamManager–updateNotifyState:inTeam:completion:方法设置群消息通知设置,参数(NIMTeamNotifyState)state表示群消息提醒类型(NIMTeamNotifyStateAll表示全部提醒,NIMTeamNotifyStateNone表示全部不提醒,NIMTeamNotifyStateOnlyManager表示仅管理员消息提醒)。
    • 查询:NIMTeamManager–notifyStateForNewMsg:方法。
    • 设置:通过nim.updateInfoInTeam接口修改自己的群属性时,传入参数muteNotiType表示群消息提醒类型(0表示全部提醒,1表示全部不提醒,2表示仅管理员消息提醒)。
    • 查询:通过nim.getTeamMembers({teamId: XXX, done: XXX})获取所有群成员,或者通过nim.getTeamMemberByTeamIdAndAccount({teamId: XXX, account: XXX, done: XXX})获取特定群成员,群成员对象的muteNotiType属性即为群消息提醒类型。

    根据群ID和用户accid查询单个群成员信息

  • Windows

  • Android

  • iOS

  • Web

    • C: nim_team.h中:nim_team_query_team_member_async
    • C++: nim::Team::QueryTeamMemberAsync
    • C#: NIM.Team.TeamAPI.QuerySingleMemberInfo
  • 异步版本(如果本地群成员资料已过期会去服务器获取最新的):NIMClient.getService(TeamService.class).queryTeamMember(teamId, accid).setCallback(...)
    同步版本(仅查询本地群资料):TeamMember member = NIMClient.getService(TeamService.class).queryTeamMemberBlock(teamId, accid)

  • NIMTeamManager–teamMember:inTeam:方法。

  • nim.getTeamMemberByTeamIdAndAccount({teamId: 123, account: 'accid', done: getTeamMemberDone})

关于设置群组免打扰返回 403 现象:给所在的群组设置免打扰(muteTeam),一部分群组成功返回 200,一部分群组失败返回 403。
原因:使用了更新群成员信息第三方回调功能,业务服务器给云信服务器返回拒绝,云信服务器会返回 403 给 SDK。

此文档是否对你有帮助?
有帮助
去反馈
  • 如何判断账号是否为某群成员?
  • 关于创建群组时的成员数量
  • 关于创建群组返回 414
  • 调用IM SDK主动退群接口,返回 802
  • 普通群获取群成员,返回 802
  • 发送群消息,返回 802
  • 调用IM服务端API解散群,返回 414
  • 接受入群邀请返回 807
  • 创建群数量
  • 加入群数量
  • 群最高人数(群容量)
  • 群管理员人数
  • 调用IM服务端API群组功能(高级群)相关接口返回{"desc": "no support", "code":403}
  • 通过IM服务端API创建群并邀请了群成员,但是查询群成员列表只有群主自己
  • 关于IM服务端API [获取群组详细信息] 返回的部分参数的说明