系统通知概述

更新时间: 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 邀请加入高级群
  • from:邀请方的帐号
  • to:对应的群ID
  • attach
    • team:被邀请进入的群
rejectTeamInvite 拒绝加入高级群的邀请
  • from:拒绝入群邀请的用户的帐号
  • to:对应的群ID
applyTeam 申请加入高级群
  • from:申请方的帐号
  • to:对应的群ID
rejectTeamApply 拒绝加入高级群的申请
  • from:拒绝方的帐号
  • to:对应的群ID
  • attach
    • team:对应的群
superTeamInvite 邀请加入超大群
  • from:拒绝入群邀请的用户的帐号
  • to:对应的群 ID
rejectSuperTeamInvite 拒绝加入超大群的邀请
  • from:邀请方的帐号
  • to:对应的群ID
  • attach
    • team:被邀请加入的超大群对象
applySuperTeam 申请加入超大群
  • from :申请方的帐号
  • to :对应的群 ID
rejectSuperTeamApply 拒绝加入超大群的申请
  • from :拒绝方的帐号
  • to :对应的群 ID
  • attach
    • team :对应的超大群
addFriend 添加好友
  • from:申请方的帐号
  • to:接收方的账号
applyFriend 申请好友
  • from:申请方的帐号
  • to:接收方的账号
passFriendApply 通过好友申请
  • from:通过方的帐号
  • to:申请方的账号
rejectFriendApply 拒绝好友申请
  • from:拒绝方的帐号
  • to:申请方的账号
deleteFriend 删除好友
  • from:删除方的帐号
  • to:被删除方的账号
deleteMsg 撤回消息 msg :被删除的消息的部分字段
如果是群消息,那么所有群成员都会收到此条系统通知
如果同时在多个端登录同一个账号,那么其它端也会收到此条系统通知
custom 自定义系统通知 -

系统通知类型除了custom外,其他都属于内置系统通知,主要分为teamfriend两大类。

此文档是否对你有帮助?
有帮助
去反馈
  • 系统通知概述
  • 内置系统通知
  • 自定义系统通知
  • 系统通知功能
  • 系统通知对象
  • 系统通知类型