文档导航
iOS
SDK 版本:  5.X
公告:融云新文档中心已上线,欢迎到新文档中心阅读 iOS IMLibiOS IMKit 的文档。

消息介绍

更新时间:2024-05-30 PDF

消息介绍

IMLib SDK 定义了 RCMessage 类,用于进行消息传输和管理。

RCMessage 模型

RCMessage 类中封装了以下关键数据:

  • 用于消息传输的属性:发送者 ID、接收者 ID、所属会话类型等。
  • 消息内容体: 用于封装一条消息携带的的具体内容,分为普通消息内容体和媒体消息内容体。例如,文本消息内容(RCTextMessage)属于普通消息内容体,图片消息内容(RCImageMessage)属于媒体消息内容体。消息内容体的类型,常称为「消息类型」,决定了使用发送普通消息还是发送媒体的接口。
提示

文档里出现的「消息」,如文本消息、语音消息等,有时指继承自 RCMessageContentRCMediaMessageContent 的消息具体内容。

下表描述 RCMessage 类的关键属性,完整的属性列表可参考 API 文档。

RCMessage 的数据结构如下:

属性名 类型 描述
objectName NSString 消息类型的标识名,通过消息体类方法 +getObjectName 获取的值决定。
content RCMessageContent 消消息携带的具体内容,必须为 RCMessageContentRCMediaMessageContent 的子类对象,其中封装了不同类型消息的具体数据字段。即时通讯服务已提供预定义的消息类型,并规定了跨平台一致的消息内容体结构(参见消息类型概述),如文本、语音、图片、GIF 等。您也可以通过自定义消息内容体创建自定义消息类型。
conversationType RCConversationType 会话类型枚举,例如单聊、群聊、聊天室、超级群、系统会话等。参考会话介绍
senderUserId NSString 消息发送者的用户 ID。
targetId NSString 会话 ID(或称目标 ID),用于标识会话对端。
  1. 针对单聊会话,用对端用户的 ID 作为 Target ID,因此发送与接收的所有消息的 Target ID 一定为对端的用户 ID。请注意,本端用户所接收的消息在本地消息数据中存储的 Target ID 也不是当前用户 ID,而是对端用户(消息发送者)的用户 ID。
  2. 在群组、聊天室、超级群会话中,Target ID 为对应的群组、聊天室、超级群 ID。
  3. 针对系统会话,因客户端用户无法回复系统会话消息,因此不需要 Target ID。
channelId NSString 超级群频道 ID。
messageId long 消息 ID,消息在本地存储中的唯一 ID(数据库索引唯一值)。
messageUId String 消息 UID,在同一个 App Key 下全局唯一。只有发送成功的消息才有唯一 ID。
messageDirection RCMessageDirection 消息方向枚举,分为发送和接收。
sentTime long long 消息发送时间。发送时间为消息从发送客户端到达服务器时服务器的本地时间。使用 UNIX 时间戳,单位为毫秒。
receivedTime long long 消息接收时间。接收时间为消息到达接收客户端时客户端的本地时间。使用 UNIX 时间戳,单位为毫秒。
sentStatus RCSentStatus 发送消息的状态。如发送中、发送成功、发送失败、取消发送。
receivedStatus RCReceivedStatus 接收到的消息的状态,如是否已读、是否下载等。详见消息接收状态
readReceiptInfo RCReadReceiptInfo 群聊消息已读回执信息。详细请参考群聊消息回执
canIncludeExpansion BOOL 是否允许消息扩展。详情请参考 消息扩展
expansionDic NSDictionary 消息扩展信息。详情请参考 消息扩展
extra NSString 消息的附加信息,该字段为本地操作的字段,不会发往服务端。请区别于 RCMessage.content.extra,后者会随消息一并发送到对端。
isOffLine BOOL 是否是离线消息,只在接收消息的回调方法中有效,如果消息为离线消息,则为 YES ,其他情况均为 NO。

RCMessageContent

RCMessage 类中封装了 content 属性,代表一条消息携带的具体内容。消息内容体的类型必须继承以下基类:

  • RCMessageContent - 即普通消息内容体。例如,SDK 内置消息类型中的文本消息内容体(RCTextMessage)即继承自 RCMessageContent
  • RCMediaMessageContent - 即媒体消息内容体,继承自 MessageContent 基类,并在其基础上增加了对媒体文件的处理逻辑。。例如,SDK 内置消息类型中的文本消息内容体(RCImageMessage)即继承自 MediaMessageContent。在发送和接收消息时,SDK 会判断消息类型是否为媒体类型消息,如果是媒体类型,则会触发上传或下载媒体文件流程。

即时通讯服务已提供预定义的、跨平台一致的消息内容体结构(参见消息类型概述),如文本、语音、图片、GIF 等。如果您需要实现自定义消息,可以继承 RCMessageContentRCMediaMessageContent,创建自定义消息内容体。

消息存储策略

客户端 SDK 和即时通讯服务端通过消息存储策略(RCMessagePersistent)识别消息的类型、在本地和服务端的存储策略、是否计入未读消息数等属性。继承自 RCMessageContentRCMediaMessageContent 的消息具体内容都遵守 RCMessagePersistentCompatible 协议,设置与存储相关属性。

如果发送 SDK 内置消息类型的消息,则 RCMessagePersistent 由 SDK 默认自动处理,无需额外操作。关于内置消息的存储策略,详见消息类型概述

如果您需要创建自定义消息类型,则需要注意,自定义消息必须遵守 RCMessagePersistentCompatible 协议。详见自定义消息类型

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈