群消息管理
更新时间: 2024/03/07 11:28:17
网易云信 NIM SDK 支持群组中的消息收发,群组相关操作的通知消息的接收,以及群消息通知模式的设置。
群消息收发
群组中支持收发多种消息类型。
在创建/加入群组后,用户发送和接收消息的接口与单聊消息收发相同,区别在于会话类型(sessionType
)的参数配置,选择 team
即可。
SessionTypeEnum
参数说明
枚举常量 | 说明 |
---|---|
p2p | 单聊 |
team | 高级群 |
superTeam | 超大群 |
chatRoom | 聊天室 |
system | 系统通知 |
具体消息收发的流程,请参见消息收发。
群组通知消息
NIM SDK 内置支持的会话消息类型(NIMMessageType
)中的通知消息(notification
)主要用于群组、聊天室和超大群的事件通知,由服务端下发,客户端无法发送事件通知消息。
目前支持触发群通知消息的事件如下:
NIMTeamNotificationTypes |
附件类 | 事件说明 |
---|---|---|
acceptInvite | NIMMemberChangeAttachment | 接受邀请后入群(需要被邀请人同意的模式) |
inviteMember | NIMMemberChangeAttachment | 邀请成员入群(无需被邀请人同意的模式) |
addTeamManager | NIMMemberChangeAttachment | 添加管理员 |
kickMember | NIMMemberChangeAttachment | 被踢出群 |
transferOwner | NIMMemberChangeAttachment | 转让群主 |
passTeamApply | NIMMemberChangeAttachment | 申请加入群成功 |
removeTeamManager | NIMMemberChangeAttachment | 移除管理员 |
dismissTeam | NIMDismissAttachment | 解散群 |
leaveTeam | NIMLeaveTeamAttachment | 退出群 |
muteTeamMember | NIMMuteMemberAttachment | 群内禁言/解禁 |
updateTeam | NIMUpdateTeamAttachment | 群信息更新 |
群通知消息解析步骤
- 通过
NIMMessage.messageType
方法获取消息类型,若为notification
,则为通知消息。 - 将
NIMMessage.messageAttachment
方法获取的附件对象强类型转换为NIMTeamNotificationAttachment
。 - 通过
NIMTeamNotificationAttachment.type
方法获取具体的通知类型(TeamNotificationTypes
)。 - 根据对应的
TeamNotificationTypes
将NIMMessage.messageAttachment
得到的附件对象强转为对应的附件类(见上方表格)。
- 针对
NIMMemberChangeAttachment
,通过targets
方法可以获取该事件的承受者。如 B 被踢出群,则通过targets
可以获取到 B 的用户账号。 - 针对
NIMMuteMemberAttachment
,其为NIMMemberChangeAttachment
的子类,可通过targets
可以获取该事件的承受者,可通过mute
判断是禁言还是被解禁。 - 针对
NIMUpdateTeamAttachment
,需要解析到具体是哪个群信息被更新。群整体禁言属于此类型。
解析被更新的群信息,示例代码如下:
NimCore.instance.messageService.onMessage.listen((event) {
print('Test_Observer onMessage ${event.toString()}');
for (NIMMessage m in event) {
if(message.messageType = NIMMessageType.notification){
if (type >= NIMTeamNotificationTypes.inviteMember &&
type <= NIMTeamNotificationTypes.muteTeamMember) {
///TODO 参考支持触发群通知消息的事件
}
}
}
});
群消息免打扰
SDK 支持对群消息通知提醒模式的配置。群消息通知提醒模式(NIMTeamMessageNotifyTypeEnum
)分为:
- all:全部提醒(默认)
- manager:仅群主/管理员消息提醒
- mute:全部不提醒
以上通知提醒指的是云信体系内的推送与消息提醒。
群消息的提醒模式不影响群消息的接收和未读数的变化。若将提醒模式设置为全部不提醒,仍然能接收到群消息接收,未读数仍会变化。
设置免打扰
通过调用 muteTeam
来设置指定群消息通知类型。
参数说明:
参数 | 说明 |
---|---|
teamId | 群ID |
notifyType | 通知类型枚举 all:全部提醒(默认) manager:仅群主/管理员消息提醒 mute:全部不提醒 |
示例代码:
var result = await NimCore.instance.teamService.muteTeam(
teamId,
NIMTeamMessageNotifyTypeEnum.mute);
查询免打扰状态
可通过 NIMTeam.messageNotifyType
获取对应群的消息通知提醒模式。
群消息已读回执
群聊消息已读回执相关接口,请参见群聊消息已读回执。
API 参考
API |
说明 |
---|---|
muteTeam |
设置指定群消息通知类型 |
fetchTeamMessageReceiptDetail |
(群消息发送方)查询单条群组消息在指定用户中的已读、未读账号列表 |
queryTeamMessageReceiptDetail |
从本地数据库查询单条群组消息在指定用户中的已读、未读账号列表(同步接口) |
refreshTeamMessageReceipt |
(群消息发送方)批量刷新群组消息已读、未读的数量信息,没有异步回调 |
sendTeamMessageReceipt |
(群消息接收方)标记群组消息已读 |
此文档是否对你有帮助?