群消息管理
更新时间: 2024/03/12 11:36:16
网易云信 NIM SDK 支持群组中的消息收发,群组相关操作的通知消息的接收,以及群消息通知模式的设置。
群消息收发
群组中支持收发多种消息类型。
在创建/加入群组后,用户发送和接收消息的接口与单聊消息收发相同,区别在于会话类型(NIMSessionType
)的参数配置,选择 kNIMSessionTypeTeam
即可。
NIMSessionType
参数说明
枚举常量 | 说明 |
---|---|
kNIMSessionTypeP2P | 个人单聊,即点对点 |
kNIMSessionTypeTeam | 高级群 |
kNIMSessionTypeSuperTeam | 超大群 |
具体消息收发的流程,请参见消息收发。
群组通知消息
NIM SDK 内置支持的会话消息类型(NIMMessageType
)中的通知消息(kNIMMessageTypeNotification
)主要用于群组、聊天室和超大群的事件通知,由服务端下发,客户端无法发送事件通知消息。
目前支持触发群通知消息的事件如下:
NIMNotificationId |
事件说明 |
---|---|
kNIMNotificationIdTeamSyncCreate | 创建群 |
kNIMNotificationIdTeamInviteAccept | 接受邀请后入群(需要被邀请人同意的模式) |
kNIMNotificationIdTeamInvite | 邀请入群(无需被邀请人同意的模式) |
kNIMNotificationIdTeamMemberChanged | 群成员变更 |
kNIMNotificationIdTeamAddManager | 添加管理员 |
kNIMNotificationIdTeamKick | 被踢出群 |
kNIMNotificationIdTeamOwnerTransfer | 转让群主 |
kNIMNotificationIdTeamApplyPass | 申请加入群成功 |
kNIMNotificationIdTeamRemoveManager | 移除管理员 |
kNIMNotificationIdTeamDismiss | 解散群 |
kNIMNotificationIdTeamLeave | 退出群 |
kNIMNotificationIdTeamMuteMember | 群内禁言/解禁 |
kNIMNotificationIdTeamUpdate | 群信息更新 |
kNIMNotificationIdTeamSyncUpdateMemberProperty | 群成员信息更新 |
kNIMNotificationIdLocalGetTeamMsgUnreadCount | 获取群消息未读数 |
kNIMNotificationIdLocalGetTeamMsgUnreadList | 获取群消息未读列表 |
群消息免打扰
SDK 支持对群消息通知提醒模式的配置。群消息通知提醒模式分为:
- 全部提醒(默认)
- 仅群主/管理员消息提醒
- 全部不提醒
以上通知提醒指的是云信体系内的推送与消息提醒。
群消息的提醒模式不影响群消息的接收和未读数的变化。若将提醒模式设置为全部不提醒,仍然能接收到群消息接收,未读数仍会变化。
设置免打扰
通过调用 UpdateMyPropertyAsync
来设置指定群消息提醒类型。
接口原型:
static bool nim::Team::UpdateMyPropertyAsync (const TeamMemberProperty & prop,
const TeamEventCallback & cb,
const std::string & json_extension = ""
)
参数说明:
参数 | 说明 |
---|---|
prop | 群成员属性,具体请参见TeamMemberProperty |
json_extension | 自定义扩展字段 |
cb | 修改群成员信息的回调函数 |
示例代码:
long long new_bits = 0;
if (全部提醒)
new_bits &= ~nim::kNIMTeamBitsConfigMaskMuteNotify;
else if (不提醒)
new_bits |= nim::kNIMTeamBitsConfigMaskMuteNotify;
else//只提醒管理员消息
new_bits |= nim::kNIMTeamBitsConfigMaskOnlyAdmin;
nim::TeamMemberProperty values(群id, 自己的account id, 自己的群成员类型);
values.SetBits(new_bits);
nim::Team::UpdateMyPropertyAsync(values, nbase::Bind(&TeamCallback::OnTeamEventCallback, std::placeholders::_1));
void TeamCallback::OnTeamEventCallback(const nim::TeamEvent& result)
{
...
}
错误码:
状态码 | 说明 |
---|---|
200 | 成功 |
803 | 群组不存在 |
804 | 用户不在群组中 |
805 | 群类型错误 |
查询免打扰状态
可通过TeamMemberProperty
的 GetBits
方法获取对应群的消息通知提醒模式。
示例代码
TeamMemberProperty prop{};
// ...
int64_t bits = prop.GetBits();
if ( bits & kNIMTeamBitsConfigMaskMuteNotify ) {
std::cout << "关闭提醒";
} elseif ( bits & kNIMTeamBitsConfigMaskOnlyAdmin ) {
std::cout << "只接收管理员消息";
}
群消息已读回执
群聊消息已读回执相关接口和群聊消息已读/未读数查询相关操作,请参见群聊消息已读回执。
此文档是否对你有帮助?