系统通知概述
更新时间: 2024/03/14 18:45:33
系统通知概述
系统通知是云信系统内建的通知,包括预定义的内置系统通知和自定义系统通知两类。
内置系统通知
内置系统通知,由云信服务器推送给用户或群组的系统类的事件通知。内置系统通知由 SDK 负责接收和存储,并提供较简单的未读数管理。
目前内置系统通知主要包括高级群和超大群相关事件变动的通知,例如入群申请,入群邀请等,如果第三方应用还托管了好友关系,则内置系统通知包括好友的添加、删除等。内置系统通知的具体类型请参见NIMEnumSystemMessageType
。
内置系统通知通常在验证消息列表中展现。例如:某某某请求加你为好友等。
内置系统通知与通知消息的区别
在群组,超大群以及聊天室场景中,会通过事件通知的方式传递成员的具体操作。部分通知会通过通知消息接收,部分则通过内置系统通知接收。
例如:在群组中,用户申请入群(applyTeam)和邀请他人入群(teamInvite)会通过内置系统通知来通知群组成员。而同意入群申请(passTeamApply)和同意入群邀请(acceptTeamInvite)则通过群通知消息的形式来通知。
IM SDK 区分两者的主要依据是,该通知是否归属于群会话。例如:用户申请入群,该消息仅需要群主或管理员处理,因此不属于群会话内容。而同意入群申请,该消息会通知群会话中的所有成员,因此属于群通知消息。
通知消息属于会话内的一种消息(消息类型为 notification
),有在线、离线、漫游。目前用于(已操作完成的)高级群、超大群和聊天室相关的通知消息,具体的通知类型请参见 群通知消息类型、超大群通知消息类型和聊天室通知消息类型,通知消息不计入消息未读数。没有推送和通知栏提醒。通知消息一般位于聊天界面的中间。例如:群名称更新、某某某退出了群聊等。
自定义系统通知
自定义系统通知,既可以由客户端发起,也可以由开发者服务器发起。SDK 仅透传自定义系统通知,不负责解析和存储。通知内容由第三方 APP 自由扩展。
开发者可以根据其业务逻辑自定义一些事件状态的通知,来实现各种业务场景。例如实现单聊场景中的对方“正在输入”的功能。
自定义系统通知与自定义消息的区别
自定义消息属于会话内的一种消息(消息类型为 IMMessage.custom
),会存储在云信的消息数据库中,需要跟其他消息一同展现给用户。主要提供给开发者定制消息,有在线、离线、漫游、通知栏提醒。自定义消息一般与普通文本,语音消息相同,位于聊天界面的左右两侧。例如,猜拳、贴图、阅后即焚均可以采用自定义消息来实现。
自定义系统通知属于系统通知,用于第三方通知,不会存储在云信的数据库中。
系统通知功能
类型 | 消息存储 | 未读计数 | 在线消息 | 离线消息 | 漫游消息 | 消息推送 |
---|---|---|---|---|---|---|
内置系统通知 | 有 | 有 | 有 | 有 | 没有 | 没有 |
自定义系统通知 | 没有 | 没有 | 有 | 有 | 没有 | 有 |
自定义系统通知默认只发送给在线用户,如需要发送给离线用户,可以通过设置具体的参数来实现,即 sendToOnlineUsersOnly=false
。
系统通知对象
系统通知由 NIMSystemMessage
来定义。其参数说明如下:
参数 | 说明 |
---|---|
time | 时间戳 |
type |
系统通知类型,具体请参见NIMSystemMessageType |
from | 系统通知的来源,账号或者群ID |
to | 系统通知的目标,账号或者群ID |
idServer | 内置系统通知的 idServer,系统通知的唯一标识 |
read | 内置系统通知是否已读 |
category |
内置系统通知种类,分为群组相关(team )和好友相关(friend ) |
state |
内置系统通知状态,分为未处理(init ),已通过(passed ),已拒绝(rejected ),错误(error ) |
error | 内置系统通知的状态为 error 时,此字段包含错误的信息,具体请参见NIMCommonError |
localCustom | 内置系统通知的本地自定义扩展字段 在支持数据库时可以调用 updateLocalSysMsg 更新本地系统通知来更新此字段,此字段只会被更新到本地数据库,不会被更新到服务器上 |
ps | 内置系统通知的附言 |
attach | 内置系统通知的附加信息,根据系统通知类型(type )来查看不同类型的系统通知对应的附加信息 |
scene | 自定义系统通知的场景,可选择单聊(p2p ),高级群聊(team ),超大群聊天(superTeam ) |
content | 自定义系统通知的内容 |
isPushable | 是否需要推送 |
apnsText | 自定义系统通知的 APNS 推送文案,仅对接收方为iOS设备有效 |
pushPayload | 自定义系统通知的推送属性 推荐使用 JSON 格式构建,若通过非 JSON 格式构建, Web端正常接收,但是会被其它端丢弃 |
needPushNick | 是否需要推送昵称 |
sendToOnlineUsersOnly | 自定义系统通知是否只发送给在线用户true :只发送给在线用户,适用于发送即时通知场景,如“正在输入”false :若目标用户或群不在线时,会在其上线后再推送该参数只对单聊场景的自定义系统通知有效,对群自定义系统通知无效,群自定义系统通知只会发给在线的群成员,不会存离线 |
cc | 自定义系统通知是否抄送 |
env | 环境变量,用于指向不同的抄送、第三方回调等配置 |
系统通知类型
SDK 通过 NIMSystemMessage
中的 type
字段来标识系统通知的类型。具体类型如:
系统通知事件类型 | 说明 | 系统通知字段 |
---|---|---|
teamInvite |
邀请加入高级群 |
|
rejectTeamInvite |
拒绝加入高级群的邀请 |
|
applyTeam |
申请加入高级群 |
|
rejectTeamApply |
拒绝加入高级群的申请 |
|
superTeamInvite |
邀请加入超大群 |
|
rejectSuperTeamInvite |
拒绝加入超大群的邀请 |
|
applySuperTeam |
申请加入超大群 |
|
rejectSuperTeamApply |
拒绝加入超大群的申请 |
|
addFriend |
添加好友 |
|
applyFriend |
申请好友 |
|
passFriendApply |
通过好友申请 |
|
rejectFriendApply |
拒绝好友申请 |
|
deleteFriend |
删除好友 |
|
deleteMsg |
撤回消息 | msg :被删除的消息的部分字段如果是群消息,那么所有群成员都会收到此条系统通知 如果同时在多个端登录同一个账号,那么其它端也会收到此条系统通知 |
custom |
自定义系统通知 | - |
系统通知类型除了custom
外,其他都属于内置系统通知,主要分为team
和friend
两大类。