IM 即时通讯
Web
产品介绍
简介
主要功能
产品优势
海外数据中心
IM平滑迁移方案
接口及业务限制
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
多端登录与互踢策略
质量数据监控台
体验 Demo
下载 SDK 与 Demo 源码
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
快速开始
跑通 IM Demo 源码
实现 IM 文本消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
非React框架集成 IM UIKit
组件导入
初始化
全局上下文
登录相关
实现消息收发及界面自定义
集成会话列表界面
集成会话消息界面
集成用户资料组件
集成通讯录界面
集成搜索组件
非 React 框架自定义渲染
主题样式设置
语言设置
初始化(兼容 NIM SDK)
不含 UI 集成
集成 SDK
浏览器环境集成
Node.js集成
初始化与登录相关
初始化与登录 IM
IM 连接相关
多端登录与互踢
消息相关
消息概述
消息收发
消息配置选项
广播消息收发
消息已读回执
消息撤回
消息重发与转发
本地消息
通知消息
群通知消息
超大群通知消息
历史消息
最近会话
用户资料托管
好友关系托管
用户关系托管
在线状态订阅
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
开通聊天室功能
聊天室
反垃圾(内容审核)
域名高可用
融合存储方案
扩展功能
工具方法
最佳实践
聊天室重要消息投递
API参考
SDK API (Web)
IM UIKit Store API
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
服务协议

群组功能

更新时间: 2023/01/06 17:18:44

本文已废弃,请前往群组概述群组功能文档查看相关说明。

群组功能概述

SDK 提供高级群形式的群功能

高级群拥有完善的成员权限体系及管理功能,群内所有用户根据权限分为群主、管理员、以及群成员。

初始化参数

示例代码

var nim = NIM.getInstance({
  onteams: onTeams,
  onsynccreateteam: onCreateTeam,
  onteammembers: onTeamMembers,
  //onsyncteammembersdone: onSyncTeamMembersDone,
  onupdateteammember: onUpdateTeamMember,
  shouldCountNotifyUnread: function (msg) {
    // 根据msg的属性自己添加过滤器
    if (msg.something === someting) {
    return true
    }
  }
});
function onTeams(teams) {
  console.log('收到群列表', teams);
  data.teams = nim.mergeTeams(data.teams, teams);
  onInvalidTeams(teams.invalid);
}
function onInvalidTeams(teams) {
  data.teams = nim.cutTeams(data.teams, teams);
  data.invalidTeams = nim.mergeTeams(data.invalidTeams, teams);
  refreshTeamsUI();
}
function onCreateTeam(team) {
  console.log('你创建了一个群', team);
  data.teams = nim.mergeTeams(data.teams, team);
  refreshTeamsUI();
  onTeamMembers({
    teamId: team.teamId,
    members: owner
  });
}
function refreshTeamsUI() {
  // 刷新界面
}
function onTeamMembers(obj) {
  console.log('群id', teamId, '群成员', members);
  var teamId = obj.teamId;
  var members = obj.members;
  data.teamMembers = data.teamMembers || {};
  data.teamMembers[teamId] = nim.mergeTeamMembers(data.teamMembers[teamId], members);
  data.teamMembers[teamId] = nim.cutTeamMembers(data.teamMembers[teamId], members.invalid);
  refreshTeamMembersUI();
}
// function onSyncTeamMembersDone() {
//     console.log('同步群成员列表完成');
// }
function onUpdateTeamMember(teamMember) {
  console.log('群成员信息更新了', teamMember);
  onTeamMembers({
    teamId: teamMember.teamId,
    members: teamMember
  });
}
function refreshTeamMembersUI() {
  // 刷新界面
}

参数解释

  • onteams, 同步列表的回调, 会传入群数组
  • onsynccreateteam, 当前登录帐号在其它端创建群之后, 会收到此回调, 会传入群对象
  • onteammembers, 同步群成员的回调, 一个群对应一个回调, 会传入群成员数组
  • onsyncteammembersdone, Deprecated!, 当所有群的群成员同步结束时, 会调用此回调
  • onupdateteammember, 群成员信息更新后的回调, 会传入群成员对象, 不过此时的信息是不完整的, 只会包括被更新的字段。当前登录帐号在其它端修改自己的群属性时也会收到此回调。
  • onCreateTeam, 创建群的回调, 此方法接收一个参数, 包含群信息和群主信息
  • onUpdateTeam, 更新群的回调, 此方法接收一个参数, 更新后的群信息
  • onAddTeamMembers, 新成员入群的回调, 此方法接收一个参数, 包含群信息和群成员信息
  • onRemoveTeamMembers, 有人出群的回调, 此方法接收一个参数, 包含群信息和群成员账号
  • onUpdateTeamManagers, 更新群管理员的回调, 此方法接收一个参数, 包含群信息和管理员信息
  • onDismissTeam, 解散群的回调, 此方法接收一个参数, 包含被解散的群id
  • onTransferTeam, 移交群的回调, 此方法接收一个参数, 包含群信息和新老群主信息
  • onUpdateTeamMembersMute, 更新群成员禁言状态的回调, 此方法接收一个参数, 包含群信息和禁言状态信息
  • shouldCountNotifyUnread, 群消息通知是否加入未读数开关,是一个函数,如果返回true,则计入未读数,否则不计入

群对象

群对象有如下字段

  • teamId: 群Id
  • appId: 群所属的app的id
  • type: 群类型
  • name: 群名字
  • avatar: 群头像
  • intro: 群简介
  • announcement: 群公告
  • joinMode: 群加入方式, 仅限高级群
  • beInviteMode: 群被邀请模式, 仅限高级群
  • inviteMode: 群邀请模式, 仅限高级群
  • updateTeamMode: 群信息修改权限, 仅限高级群
  • updateCustomMode: 群信息自定义字段修改权限, 仅限高级群
  • owner: 群主
  • level: 群人数上限
  • memberNum: 群成员数量
  • memberUpdateTime: 群成员最后更新时间
  • createTime: 群创建时间
  • updateTime: 群最后更新时间
  • custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
  • serverCustom: 第三方服务器扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
  • valid: 是否有效, 解散后该群无效
  • validToCurrentUser: 该群是否对当前用户有效, 如果无效, 那么说明被踢了
  • mute: 是否禁言, 禁言状态下成员不能发送消息
  • muteType: 禁言类型
    • none: 都不禁言
    • normal: 普通成员禁言,即普通成员不能发消息
    • all: 全体禁言,即所有成员均不能发消息

群加入方式

群加入方式有以下几种

  • 'noVerify' (不需要验证)
  • 'needVerify' (需要验证)
  • 'rejectAll' (禁止任何人加入)

群被邀请模式

群被邀请模式有以下几种

  • 'needVerify' (需要邀请方同意)
  • 'noVerify' (不需要邀请方同意)

群邀请模式

群邀请模式有以下几种

  • 'manager' (只有管理员/群主可以邀请他人入群)
  • 'all' (所有人可以邀请他人入群)

群信息修改权限

群信息修改权限有以下几种

  • 'manager' (只有管理员/群主可以修改)
  • 'all' (所有人可以修改)

群信息自定义字段修改权限

群信息自定义字段修改权限有以下几种

  • 'manager' (只有管理员/群主可以修改)
  • 'all' (所有人可以修改)

群成员对象

群成员对象有如下字段

  • teamId: 群ID
  • account: 帐号
  • type: 群成员类型
  • nickInTeam: 在群里面的昵称
  • active: 激活状态
  • joinTime: 入群时间
  • updateTime: 更新时间

群成员类型

  • 'normal' (普通成员)
  • 'owner' (群主)
  • 'manager' (管理员)

创建群

  • 高级群的群加入方式默认为 'needVerify'
  • 高级群的群被邀请模式默认为'needVerify'
  • 高级群的群邀请模式默认为'manager'
  • 高级群的群信息修改权限默认为'manager'
  • 高级群的群信息自定义字段修改权限默认为'manager'
  • 高级群被邀请的群成员会收到一条类型为类型为'teamInvite'系统通知, 群成员只有接受邀请之后才会出现在该群中。
    • 接受邀请后, 所有群成员会收到一条类型为'acceptTeamInvite'群通知消息
    • 拒绝邀请后, 群主会收到一条类型为'rejectTeamInvite'系统通知
  • level: 群人数上限,选填,默认为该app当前整体配置的群人数上限。指定的群人数上限不可超过当前app配置的群人数上限,否则创建失败,返回相关的错误码。
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
// 创建高级群
nim.createTeam({
  type: 'advanced',
  name: '高级群',
  avatar: 'avatar',
  accounts: ['a1', 'a2'],
  intro: '群简介',
  announcement: '群公告',
  // joinMode: 'needVerify',
  // beInviteMode: 'needVerify',
  // inviteMode: 'manager',
  // updateTeamMode: 'manager',
  // updateCustomMode: 'manager',
  level: 50,
  ps: '我建了一个高级群',
  custom: '群扩展字段, 建议封装成JSON格式字符串',
  done: createTeamDone
});
function createTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('创建' + obj.team.type + '群' + (!error?'成功':'失败'));
  if (!error) {
    onCreateTeam(obj.team, obj.owner);
  }
}

发送群消息

发送群消息时只需将上文中各个发送消息接口的scene替换为'team', 将to替换为群ID

接收群消息

参考上文的接收消息

更新群

更新群后, 所有群成员会收到一条类型为'updateTeam'群通知消息。此类群通知消息的from字段的值为更新群的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为被更新的群信息

nim.updateTeam({
  teamId: '123',
  name: '群名字',
  avatar: 'avatar',
  intro: '群简介',
  announcement: '群公告',
  joinMode: 'needVerify',
  custom: '自定义字段',
  done: updateTeamDone
});
function updateTeamDone(error, team) {
  console.log(error);
  console.log(team);
  console.log('更新群' + (!error?'成功':'失败'));
}

拉人入群

高级群的群主和管理员在邀请成员加入群(通过操作创建群拉人入群)之后, 被邀请的人会收到一条类型为'teamInvite'的[系统通知]/docs/TM5MzM5Njk/zMyMjc1NDUWeb开发集成/系统通知), 此类系统通知的from字段的值为邀请方的帐号, to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的, 被邀请的人可以选择接受邀请或者拒绝邀请。

  • 如果接受邀请, 那么该群的所有群成员会收到一条类型为'acceptTeamInvite'群通知消息, 此类群通知消息的from字段的值为接受入群邀请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段members的值为接收入群邀请的群成员列表。
  • 如果拒绝邀请, 那么邀请你的人会收到一条类型为'rejectTeamInvite'系统通知, 此类系统通知的from字段的值为拒绝入群邀请的用户的帐号, to字段的值为对应的群ID。
  • teamId: 群id
  • accounts: 因为群数量限制导致无法加入群的帐号列表
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
  • custom: 自定义扩展字段,选填,最长512字符,开发者也可以使用JSON格式的字符串来扩展此内容
nim.addTeamMembers({
  teamId: '123',
  accounts: ['a3', 'a4'],
  ps: '加入我们的群吧',
  custom: '',
  done: addTeamMembersDone
});
function addTeamMembersDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('入群邀请发送' + (!error?'成功':'失败'));
}

踢人出群

  • 踢人出群后, 所有群成员会收到一条类型为'removeTeamMembers'群通知消息。此类群通知消息的from字段的值为踢人的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段accounts的值为被踢的人的帐号列表。
nim.removeTeamMembers({
  teamId: '123',
  accounts: ['a3', 'a4'],
  done: removeTeamMembersDone
});
function removeTeamMembersDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('踢人出群' + (!error?'成功':'失败'));
}

接受入群邀请

  • 高级群的群主和管理员在邀请成员加入群(通过操作创建群拉人入群)之后, 被邀请的人会收到一条类型为'teamInvite'系统通知, 此类系统通知的from字段的值为邀请方的帐号, to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的, 被邀请的人可以选择接受邀请或者拒绝邀请。
    • 如果接受邀请, 那么该群的所有群成员会收到一条类型为'acceptTeamInvite'群通知消息, 此类群通知消息的from字段的值为接受入群邀请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段members的值为接收入群邀请的群成员列表。
    • 如果拒绝邀请, 那么邀请你的人会收到一条类型为'rejectTeamInvite'系统通知, 此类系统通知的from字段的值为拒绝入群邀请的用户的帐号, to字段的值为对应的群ID。
  • 参数from填邀请方的帐号
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.acceptTeamInvite({
  idServer: sysMsg.idServer,
  teamId: '123',
  from: 'zyy1',
  done: acceptTeamInviteDone
});
function acceptTeamInviteDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('接受入群邀请' + (!error?'成功':'失败'));
}

拒绝入群邀请

  • 高级群的群主和管理员在邀请成员加入群(通过操作创建群拉人入群)之后, 被邀请的人会收到一条类型为'teamInvite'系统通知, 此类系统通知的from字段的值为邀请方的帐号, to字段的值为对应的群ID, 此类系统通知的attach有一个字段team的值为被邀请进入的, 被邀请的人可以选择接受邀请或者拒绝邀请。
    • 如果接受邀请, 那么该群的所有群成员会收到一条类型为'acceptTeamInvite'群通知消息, 此类群通知消息的from字段的值为接受入群邀请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段members的值为接收入群邀请的群成员列表。
    • 如果拒绝邀请, 那么邀请你的人会收到一条类型为'rejectTeamInvite'系统通知, 此类系统通知的from字段的值为拒绝入群邀请的用户的帐号, to字段的值为对应的群ID。
  • 参数from填邀请方的帐号
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.rejectTeamInvite({
  idServer: sysMsg.idServer,
  teamId: '123',
  from: 'zyy1',
  ps: '就不',
  done: rejectTeamInviteDone
});
function rejectTeamInviteDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('拒绝入群邀请' + (!error?'成功':'失败'));
}

申请入群

  • 用户可以申请加入高级群, 目标群的群主和管理员会收到一条类型为'applyTeam'系统通知, 此类系统通知的from字段的值为申请方的帐号, to字段的值为对应的群ID, 高级群的群主和管理员在收到入群申请后, 可以选择通过或者拒绝入群申请。
    • 如果通过申请, 那么该群的所有群成员会收到一条类型为'passTeamApply'群通知消息, 此类群通知消息的from字段的值为通过入群申请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为申请方的帐号, attach有一个字段members的值为被通过申请的群成员列表。
    • 如果拒绝申请, 那么申请人会收到一条类型为'rejectTeamApply'系统通知, 此类系统通知的from字段的值为拒绝方的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
nim.applyTeam({
  teamId: '123',
  ps: '请加',
  done: applyTeamDone
});
function applyTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('申请入群' + (!error?'成功':'失败'));
}

通过入群申请

  • 用户可以申请加入高级群, 目标群的群主和管理员会收到一条类型为'applyTeam'系统通知, 此类系统通知的from字段的值为申请方的帐号, to字段的值为对应的群ID, 高级群的群主和管理员在收到入群申请后, 可以选择通过或者拒绝入群申请。
    • 如果通过申请, 那么该群的所有群成员会收到一条类型为'passTeamApply'群通知消息, 此类群通知消息的from字段的值为通过入群申请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为申请方的帐号, attach有一个字段members的值为被通过申请的群成员列表。
    • 如果拒绝申请, 那么申请人会收到一条类型为'rejectTeamApply'系统通知, 此类系统通知的from字段的值为拒绝方的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的
  • 参数from填申请方的帐号, 该参数的名字在v1.3.0版本中从account变为from
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.passTeamApply({
  idServer: sysMsg.idServer,
  teamId: '123',
  from: 'a2',
  done: passTeamApplyDone
});
function passTeamApplyDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('通过入群申请' + (!error?'成功':'失败'));
}

拒绝入群申请

  • 用户可以申请加入高级群, 目标群的群主和管理员会收到一条类型为'applyTeam'系统通知, 此类系统通知的from字段的值为申请方的帐号, to字段的值为对应的群ID, 高级群的群主和管理员在收到入群申请后, 可以选择通过或者拒绝入群申请。
    • 如果通过申请, 那么该群的所有群成员会收到一条类型为'passTeamApply'群通知消息, 此类群通知消息的from字段的值为通过入群申请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为申请方的帐号, attach有一个字段members的值为被通过申请的群成员列表。
    • 如果拒绝申请, 那么申请人会收到一条类型为'rejectTeamApply'系统通知, 此类系统通知的from字段的值为拒绝方的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的
  • 参数from填申请方的帐号, 该参数的名字在v1.3.0版本中从account变为from
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.rejectTeamApply({
  idServer: sysMsg.idServer,
  teamId: '123',
  from: 'a2',
  ps: '就不',
  done: rejectTeamApplyDone
});
function rejectTeamApplyDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('拒绝入群申请' + (!error?'成功':'失败'));
}

添加群管理员

  • 添加群管理员后, 所有群成员会收到一条类型为'addTeamManagers'群通知消息。此类群通知消息的from字段的值为添加群管理员的人的帐号, to字段的值为对应的群ID, attach有一个字段accounts的值为被加为管理员的帐号列表, attach有一个字段members的值为被加为管理员的群成员列表
nim.addTeamManagers({
  teamId: '123',
  accounts: ['a2', 'a3'],
  done: addTeamManagersDone
});
function addTeamManagersDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('添加群管理员' + (!error?'成功':'失败'));
}

移除群管理员

  • 移除群管理员后, 所有群成员会收到一条类型为'removeTeamManagers'群通知消息。此类群通知消息的from字段的值为移除群管理员的人的帐号, to字段的值为对应的群ID, attach有一个字段accounts的值为被移除的管理员的帐号列表, attach有一个字段members的值为被移除管理员的群成员列表
nim.removeTeamManagers({
  teamId: '123',
  accounts: ['a2', 'a3'],
  done: removeTeamManagersDone
});
function removeTeamManagersDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('移除群管理员' + (!error?'成功':'失败'));
}

主动退群

  • 主动退群后, 所有群成员会收到一条类型为'leaveTeam'群通知消息。此类群通知消息的from字段的值为退群的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象
nim.leaveTeam({
  teamId: '123',
  done: leaveTeamDone
});
function leaveTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('主动退群' + (!error?'成功':'失败'));
}

转让群

  • 转让群后, 所有群成员会收到一条类型为'transferTeam'群通知消息。此类群通知消息的from字段的值为转让群的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为为新群主的帐号, attach有一个字段members的值为包含新旧群主的群成员列表。
  • 如果转让群的同时离开群, 那么相当于调用主动退群来离开群, 所有群成员会再收到一条类型为'leaveTeam'群通知消息
nim.transferTeam({
  teamId: '123',
  account: 'zyy2',
  leave: false,
  done: transferOwnerDone
});
function transferOwnerDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('转让群' + (!error?'成功':'失败'));
}

解散群

  • 解散群后, 所有群成员会收到一条类型为'dismissTeam'群通知消息。此类群通知消息的from字段为解散群的人的帐号, to字段的值为被对应的群ID。
nim.dismissTeam({
  teamId: '123',
  done: dismissTeamDone
});
function dismissTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('解散群' + (!error?'成功':'失败'));
}

修改自己的群属性

目前支持修改的属性有这些

  • nickInTeam: 自己在群里面的群昵称
    • 更新昵称后, 所有其它在线的群成员会收到初始化SDK时传入的onupdateteammember回调
  • muteTeam: 是否关闭此群的消息提醒, true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定, 设置之后可以调用接口是否需要群消息通知来查询是否需要群消息通知
  • muteNotiType: 4.3.0版本添加,功能扩展了muteTeam属性,老版本无此属性,若同时定义了muteTeam与muteNotiType,则以muteNotiType为准。0表示接收提醒,1表示关闭提醒,2表示仅接收管理员提醒
  • custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串
nim.updateInfoInTeam({
  teamId: '123',
  // 此参数为可选参数
  // nickInTeam: '群昵称',
  // 静音群, 此参数为可选参数
  // muteTeam: true,
  // muteNotiType: 1,
  // 第三方扩展字段
  // custom: '{}'
  done: updateInfoInTeamDone
});
function updateInfoInTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('修改自己的群属性' + (!error?'成功':'失败'));
}

修改别人的群昵称

nim.updateNickInTeam({
  teamId: '123',
  account: 'a2',
  nickInTeam: '群昵称',
  done: updateNickInTeamDone
});
function updateNickInTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('修改自己的群属性' + (!error?'成功':'失败'));
}

更新群成员禁言状态

  • 更新群成员禁言状态后, 所有群成员会收到一条类型为'updateTeamMute'群通知消息。此类群通知消息的from字段的值为操作方, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为被禁言的帐号, attach有一个字段members的值为被禁言的群成员列表。
nim.updateMuteStateInTeam({
  teamId: '123',
  account: 'a',
  mute: true,
  done: updateMuteStateInTeamDone
})
function updateMuteStateInTeamDone(error, obj) {
  console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj);
}

获取群禁言成员列表

nim.getMutedTeamMembers({
  teamId: 'teamId',
  done: getMutedTeamMembersDone
})
function getMutedTeamMembersDone (error, obj) {
  console.log('获取群禁言成员列表' + (!error?'成功':'失败'))
  console.log(obj)
}

群整体禁言

  • 只有群主有权限对群组整体禁言,一旦标记禁言,则组内相关人员均被禁言
  • 请求参数:
    • teamId 待禁言群id
    • mute 是否禁言
  • 状态更新:
    • 返回的群属性有两个字段供开发者判断:
      • team.mute true/false,群是否被禁言
      • team.muteType 群禁言类型 none/normal/all
  nim.muteTeamAll({
    teamId: 'teamId',
    mute: true,
    done: muteTeamAllDone
  })
  function muteTeamAllDone (error, obj) {
    console.log('群禁言:' + (!error?'成功':'失败'))
    console.log(obj)
  }

获取群

  • 开发者可以调用此接口获取群资料
nim.getTeam({
  teamId: '123',
  done: getTeamDone
});
function getTeamDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('获取群' + (!error?'成功':'失败'));
}

获取群列表

  • 如果开发者在初始化SDK的时候设置了syncTeamsfalse, 那么就收不到onteams回调, 可以调用此方法来获取列表
nim.getTeams({
  done: getTeamsDone
});
function getTeamsDone(error, teams) {
  console.log(error);
  console.log(teams);
  console.log('获取群列表' + (!error?'成功':'失败'));
  if (!error) {
    onTeams(teams);
  }
}

获取群成员

  • 入群后可以调用此方法来获取群成员列表
nim.getTeamMembers({
  teamId: '123',
  done: getTeamMembersDone
});
function getTeamMembersDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('获取群成员' + (!error?'成功':'失败'));
  if (!error) {
    onTeamMembers(obj);
  }
}

通过群ID及成员账号获取群成员信息

  • 可以指定某个群的某个群成员,获取最新的群成员信息,此api基于获取群成员进行了一次筛选
nim.getTeamMemberByTeamIdAndAccount({
  teamId: '123',
  account: 'abc',
  done: getTeamMemberDone
});
function getTeamMemberDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('获取群成员' + (!error?'成功':'失败'));
  if (!error) {
    onTeamMember(obj);
  }
}

获取群成员的邀请者account id

  • 请求参数:
    • teamId 群id
    • accounts 需要查询邀请者account id的群成员账号列表,一次最多查200个。当群成员数量小于等于200时为可选参数,不填默认查全部成员;群成员数量大于200时,需要将成员列表分批多次调用此接口查询。
    • done 结果回调函数,返回数据类型为Object,key/value分别是群成员account id/邀请者account id
nim.getTeamMemberInvitorAccid({
  teamId: '123',
  accounts: ['abc', 'def'],
  done: getTeamMemberInvitorAccidDone
});
function getTeamMemberInvitorAccidDone(error, obj) {
  console.log(error);
  console.log(obj);
  console.log('获取群成员邀请者' + (!error?'成功':'失败'));
}

是否需要群消息通知

  • 此接口用于查询是否需要群消息通知
  • 成功时结果回调函数的第二个参数是一个map, key是群ID, value 是一个布尔值, 表示该群是否需要群消息通知(0表示接收提醒,1表示关闭提醒,2表示仅接收管理员提醒)
  • 部分成功时,结果回调函数的第二个参数同上,第三个参数是失败的群ID数组,第一参数是失败原因
  • 调用接口修改自己的群属性来关闭/开启某个群的消息提醒
  • web端群消息提醒行为不会根据设置的群消息通知的值改变,具体开关群消息提醒的代码需要用户根据自己的使用场景和业务逻辑进行设计增加。
nim.notifyForNewTeamMsg({
  teamIds: ['123'],
  done: notifyForNewTeamMsgDone
})
function notifyForNewTeamMsgDone(error, map) {
  console.log(error);
  console.log(map);
  console.log('查询是否需要群消息通知' + (!error?'成功':'失败'));
}

群消息已读通知

  • 设置了needMsgReceipt字段(即需要业务已读回执)的群消息,本端在线状态下,对方已读会收到相应的通知消息,通知消息格式如下:
  {
    teamMsgReceipts: [
      {
        account: "cs3",
        idClient: "5b77d3ff7eb06af5567f56647518694b",
        idServer: "68953284018340",
        read: "1",
        teamId: "1027484",
        unread: "1"
      }
    ]
  NIM.getInstance({
    // ...
    onTeamMsgReceipt: onTeamMsgReceipt
  })
  function onTeamMsgReceipt (obj) {
    console.log(obj)
  }

标记群组消息已读

  • 对应于群组消息发送时配置了needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执
  • 该接口可以发送多个群组、多条消息的已读回执。注:传参中teamMsgReceipts的元素个数上限为50。
  • 请求参数:
    • teamMsgReceipts 需要发送回执的消息配置列表
    • teamMsgReceipt.teamId 群组id
    • teamMsgReceipt.idServer 消息的serverid
    • done 回调函数
  • 回调结果:
    • error 第一个参数,如果为null表示成功
    • obj 第二个参数,发送的参数(用于校验)
    • content 第三个参数
      • content.teamMsgReceipts 失败的账号列表
  nim.sendTeamMsgReceipt({
    teamMsgReceipts: [{
      teamId: '1027484',
      idServer: '68953284018302'
    }],
    done: sendTeamMsgReceiptDone
  })
  function sendTeamMsgReceiptDone (error, obj, content) {
    console.log('标记群组消息已读' + (!error?'成功':'失败'));
  }

查询群组消息已读、未读数量

  • 对应于群组消息发送时配置了needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执
  • 该接口可以查询群组消息已读未读数量,可以同时发送多个群消息配置。注:传参中teamMsgReceipts的元素个数上限为50。
  • 请求参数:
    • teamMsgReceipts 需要发送回执的消息配置列表
    • teamMsgReceipt.teamId 群组id
    • teamMsgReceipt.idServer 消息的serverid
    • done 回调函数
  • 回调结果:
    • error 第一个参数,如果为null表示成功
    • obj 第二个参数,发送的参数(用于校验)
    • content 第三个参数,查询结果
      • 如果是多个群消息配置的结果,则该字段的teamMsgReceipts 数组顺序与查询配置一致
  nim.getTeamMsgReads({
    teamMsgReceipts: [{
      teamId: '1027484',
      idServer: '68953284018302'
    }],
    done: getTeamMsgReadsDone
  })
  function getTeamMsgReadsDone (error, obj, content) {
    console.log('获取群组消息已读' + (!error?'成功':'失败'));
    /* content.teamMsgReceipts 为
      [ {
        idClient: "c7575fca32bf142787986e752fdeff6a"
        idServer: "68527276949899"
        read: "0"
        teamId: "1021136"
        unread: "187"
      } ]
    */

查询群组消息未读账号列表

  • 对应于群组消息发送时配置了needMsgReceipt字段的群组消息,接收方可以对消息发送已读回执
  • 该接口可以查询群组消息未读账号列表,发送配置
  • 请求参数:
    • teamMsgReceipt 需要发送回执的消息配置
    • teamMsgReceipt.teamId 群组id
    • teamMsgReceipt.idServer 消息的serverid
    • done 回调函数
  • 回调结果:
    • error 第一个参数,如果为null表示成功
    • obj 第二个参数,发送的参数(用于校验)
    • content 第三个参数,账号列表
      • idClient 消息idClient
      • readAccounts 已读帐号列表
      • unreadAccounts 未读帐号列表
  nim.getTeamMsgReadAccounts({
    teamMsgReceipt: {
      teamId: '1027484',
      idServer: '68953284018302'
    },
    done: getTeamMsgReadAccountsDone
  })
  function getTeamMsgReadAccountsDone (error, obj, content) {
    console.log('获取群组消息已读' + (!error?'成功':'失败'));
    /* content.teamMsgReceipt 为
      idClient: "c7575fca32bf142787986e752fdeff6a",
      readAccounts: Array[],
      unreadAccounts: Array[]
    */
此文档是否对你有帮助?
有帮助
我要吐槽
  • 群组功能概述
  • 初始化参数
  • 群对象
  • 群加入方式
  • 群被邀请模式
  • 群邀请模式
  • 群信息修改权限
  • 群信息自定义字段修改权限
  • 群成员对象
  • 群成员类型
  • 创建群
  • 发送群消息
  • 接收群消息
  • 更新群
  • 拉人入群
  • 踢人出群
  • 接受入群邀请
  • 拒绝入群邀请
  • 申请入群
  • 通过入群申请
  • 拒绝入群申请
  • 添加群管理员
  • 移除群管理员
  • 主动退群
  • 转让群
  • 解散群
  • 修改自己的群属性
  • 修改别人的群昵称
  • 更新群成员禁言状态
  • 获取群禁言成员列表
  • 群整体禁言
  • 获取群
  • 获取群列表
  • 获取群成员
  • 通过群ID及成员账号获取群成员信息
  • 获取群成员的邀请者account id
  • 是否需要群消息通知
  • 群消息已读通知
  • 标记群组消息已读
  • 查询群组消息已读、未读数量
  • 查询群组消息未读账号列表