系统通知概述
更新时间: 2024/03/12 11:41:55
系统通知概述
系统通知是云信系统内建的通知,包括预定义的内置系统通知和自定义系统通知两类。
内置系统通知
内置系统通知,由云信服务器推送给用户或群组的系统类的事件通知。内置系统通知由 SDK 负责接收和存储,并提供较简单的未读数管理。
目前内置系统通知主要包括高级群相关事件变动的通知,例如入群申请,入群邀请等,具体推送的事件类型请参见NIMSysMsgType
。如果第三方应用还托管了好友关系,则好友的添加、删除也属于该类型的通知。
内置系统通知通常在验证消息列表中展现。例如:某某某请求加你为好友等。
内置系统通知与通知消息的区别
通知消息属于会话内的一种消息(消息类型为 kNIMMessageTypeNotification
),有在线、离线、漫游。目前用于(已操作完成的)高级群、超大群和聊天室相关的通知消息(具体通知类型请参见 NIMNotificationId
),不计入消息未读数。没有推送和通知栏提醒。通知消息一般位于聊天界面的中间。例如:群名称更新、某某某退出了群聊等。
自定义系统通知
自定义系统通知,既可以由客户端发起,也可以由开发者服务器发起。SDK 仅透传自定义系统通知,不负责解析和存储。通知内容由第三方 APP 自由扩展。
开发者可以根据其业务逻辑自定义一些事件状态的通知,来实现各种业务场景。例如实现单聊场景中的对方“正在输入”的功能。
自定义系统通知与自定义消息的区别
自定义消息属于会话内的一种消息(消息类型为 kNIMMessageTypeCustom
),主要提供给开发者定制消息使用,有在线、离线、漫游、通知栏提醒。自定义消息一般与普通文本,语音消息相同,位于聊天界面的左右两侧。例如,猜拳、贴图、阅后即焚均可以采用自定义消息来实现。
系统通知功能
类型 | 消息存储 | 未读计数 | 在线消息 | 离线消息 | 漫游消息 | 消息推送 |
---|---|---|---|---|---|---|
内置系统通知 | 有 | 有 | 有 | 有 | 没有 | 没有 |
自定义系统通知 | 没有 | 没有 | 有 | 有 | 没有 | 有 |
系统通知对象
系统通知由nim::SysMessage
来定义。其参数说明如下:
参数 | 说明 |
---|---|
timetag | 时间戳 |
type | 系统通知类型,具体请参见NIMSysMsgType |
sender_accid | 系统通知的来源,账号或者群ID |
receiver_accid | 系统通知的目标,账号或者群ID |
id | 系统通知的 ID,系统通知的唯一标识 |
content | 系统通知内容,只读,SDK 不转发该字段 |
attach | 系统通知附件 |
status | 系统通知状态,分为未读、已读、已通过、已拒绝、已删除和已失效,具体请参见NIMSysMsgStatus |
msg_setting | 系统通知相关配置,如是否需要推送、计数,是否支持离线发送等,具体请参见SysMessageSetting |
rescode | 系统通知返回的错误码,具体请参见NIMResCode |
feature | 系统通知属性,分为离线、同步、默认等,具体请参见NIMMessageFeature |
total_unread_count | 系统通知总未读数 |
client_msg_id | 系统通知客户端 ID |
callbac_ext | 第三方回调返回的自定义字段,v8.2.0版本以上适用 |
系统通知类型
目前云信的内置系统通知类型如下:
通知类型 | 说明 |
---|---|
kNIMSysMsgTypeTeamInvite |
邀请用户加入高级群 |
kNIMSysMsgTypeTeamApply |
用户申请加入高级群 |
kNIMSysMsgTypeTeamInviteReject |
用户拒绝加入高级群邀请 |
kNIMSysMsgTypeTeamReject |
拒绝用户的加入高级群申请 |
kNIMSysMsgTypeFriendAdd |
加好友,通知内容 kNIMSysMsgKeyAttach: {"vt":verifyType} 中会返回具体的验证类型 |
kNIMSysMsgTypeFriendDel |
删除好友 |
kNIMSysMsgTypeCustomP2PMsg |
自定义单聊系统通知 |
kNIMSysMsgTypeCustomTeamMsg |
自定义高级群系统通知 |
kNIMSysMsgTypeCustomSuperTeamMsg |
自定义超大群系统通知 |
kNIMSysMsgTypeUnknown |
未知类型,本地使用,发送时勿使用,作为默认 |
SDK 的自定义系统通知不计入未读数,即使配置了计数参数(kNIMSysMsgKeyPushNeedBadge=1
)也无效。
系统通知 API 概述
SDK 的 nim::SystemMsg
提供系统通知操作相关接口,帮助您快速使用系统通知功能。