IM 即时通讯
Android
开发指南

系统通知概述

更新时间: 2023/10/20 11:21:39

系统通知概述

系统通知是云信系统内建的通知,包括预定义的内置系统通知和自定义系统通知两类。

云信 IM 支持下发 30 天内最近 10000 条系统通知(单个发起方最多 100 条)。

系统通知没有漫游概念即一条通知仅投递一次。例如,接收方多端登录在线,会同时收到;但是,发送方多端登录在线,不会同步到其他端;而且,只要接收方账号在线接收过,或者登录后接收过,后续任何设备再登录该账号,都不会再次收到。

内置系统通知

内置系统通知,其对应的数据结构为 SystemMessage。由云信服务器推送给用户或群组的系统类的事件通知。内置系统通知由 SDK 负责接收和存储,并提供较简单的未读数管理。

目前内置系统通知主要包括高级群和超大群相关事件变动的通知,例如入群申请,入群邀请等。如果第三方应用还托管了好友关系,则好友的添加、删除也属于该类型的通知。具体推送的事件类型请参见SystemMessageType

内置系统通知通常在验证消息列表中展现。例如:某某某请求加你为好友等。

内置系统通知与通知消息的区别

在群组,超大群以及聊天室场景中,会通过通知的方式传递成员的具体操作。部分通知会通过通知消息接收,部分则通过内置系统通知接收。

例如:在群组中,用户申请入群(ApplyJoinTeam)和邀请他人入群(TeamInvite)会通过内置系统通知来通知群组成员。而同意入群申请(PassTeamApply)和同意入群邀请(AcceptInvite)则通过群通知消息的形式来通知。

IM SDK 区分两者的主要依据是,该通知是否归属于群会话。例如:用户申请入群,该消息仅需要群主或管理员处理,因此不属于群会话内容。而同意入群申请,该消息会通知群会话中的所有成员,因此属于群通知消息。

通知消息属于会话内的一种消息(消息类型为 MsgTypeEnum.notification ),有在线、离线、漫游。目前用于(已操作完成的)高级群、超大群和聊天室相关的通知消息(具体通知类型请参见 NotificationType),不计入消息未读数。没有推送和通知栏提醒。通知消息一般位于聊天界面的中间。例如:群名称更新、某某某退出了群聊等。

自定义系统通知

自定义系统通知,其对应的数据结构为 CustomNotification。自定义系统通知既可以由客户端发起,也可以由开发者服务器发起。SDK 仅透传自定义系统通知,不负责解析和存储。通知内容由第三方 APP 自由扩展。

开发者可以根据其业务逻辑自定义一些事件状态的通知,来实现各种业务场景。例如实现单聊场景中的对方“正在输入”的功能。

自定义系统通知不支持聊天室,仅支持点对点和高级群。

自定义系统通知与自定义消息的区别

自定义消息属于会话内的一种消息(消息类型为 MsgTypeEnum.custom),主要提供给开发者定制消息使用,有在线、离线、漫游、通知栏提醒。自定义消息一般与普通文本,语音消息相同,位于聊天界面的左右两侧。例如,猜拳、贴图、阅后即焚均可以采用自定义消息来实现。

系统通知功能

类型 消息本地存储 未读计数 在线消息 离线消息 漫游消息 消息推送
内置系统通知 没有 没有
自定义系统通知 没有 没有 没有

系统通知对象

  • 内置系统通知由SystemMessage 类定义。该接口的内置方法说明如下:
返回值类型 SystemMessage 函数 说明
String getAttach() 获取系统通知的附件内容
Object getAttachObject() 获取系统通知附件内容解析后的对象
String getContent() 获取系统通知的内容
String getCustomInfo() 获取自定义信息,目前只有拉人入群时可以设置
String getFromAccount() 该系统通知的发起方帐号
long getMessageId() 获取系统通知 ID
SystemMessageStatus getStatus() 获取系统通知的处理状态
String getTargetId() 获取系统通知的目标 ID
long getTime() 获取系统通知的发出时间,单位为 ms
SystemMessageType getType() 获取系统通知类型
boolean isUnread() 判断该系统通知是否已读
void setAttach(String attach) 设置系统通知的附件内容
void setAttachObject(Object object) 设置解析后的附件对象
void setContent(String content) 设置系统通知的内容
void setFromAccount(String fromAccount) 设置发起方帐号
void setMessageId(long messageId) 设置系统通知 ID
void setStatus(SystemMessageStatus status) 设置系统通知的处理状态
void setTargetId(String targetId) 设置系统通知的目标 ID
void setTime(long time) 设置系统通知的发出时间
void setType(int type) 设置系统通知类型
void setUnread(boolean unread) 设置改系统通知已读/未读
  • 自定义系统通知由CustomNotification 类定义。该接口的内置方法说明如下:
返回值类型 CustomNotification 函数 说明
String getApnsText() 获取推送文案
CustomNotificationConfig getConfig() 自定义通知的配置选项
String getContent() 获取消息具体内容
String getFromAccount() 获取该通知的发出者帐号
NIMAntiSpamOption getNIMAntiSpamOption() 获取反垃圾配置
Map getPushPayload() 获取推送属性
String getSessionId() 获取聊天对象的 Id(好友帐号,群 ID 等)
SessionTypeEnum getSessionType() 获取会话类型
long getTime() 获取消息时间,单位为 ms
boolean isSendToOnlineUserOnly() 该消息是否只发送当前在线的用户/群组
void setApnsText(String apnsText) 设置推送文案
void setConfig(CustomNotificationConfig config) 设置自定义通知的配置选项
void setContent(String content) 设置消息内容
void setFromAccount(String fromAccount) 设置该通知的发起者帐号
void setNIMAntiSpamOption(NIMAntiSpamOption antiSpamOption) 设置反垃圾配置项
void setPushPayload(Map pushPayload) 设置推送属性
void setSendToOnlineUserOnly(boolean sendToOnlineUserOnly) 设置该消息是否只发送给当前在线的用户/群组
void setSessionId(String sessionId) 设置聊天对象ID
void setSessionType(SessionTypeEnum sessionType) 设置会话类型
void setTime(long time) 设置消息时间

系统通知类型

目前云信的内置系统通知类型如下:

通知类型 说明
TeamInvite 邀请用户加入高级群
ApplyJoinTeam 用户申请加入高级群
DeclineTeamInvite 用户拒绝加入高级群邀请
RejectTeamApply 拒绝用户的加入高级群申请
SuperTeamInvite 邀请用户加入超大群
SuperTeamApply 用户申请加入超大群
SuperTeamInviteReject 用户拒绝加入超大群邀请
SuperTeamApplyReject 拒绝用户的加入超大群申请
AddFriend 对方(请求/已经)加你为好友
undefined 自定义事件

系统通知 API 概述

SDK 的 SystemMessageService 提供系统通知操作相关接口, SystemMessageObserver 提供系统通知相关观察者通知接口。

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