会话介绍
会话是指融云 SDK 根据每条消息的发送方、接收方以及会话类型等信息,自动建立并维护的逻辑关系,是一种抽象概念。
会话类型
融云支持多种会话类型,以满足不同业务场景需求。客户端 SDK 通过 RCConversationType
枚举来表示各类型会话,各枚举值代表的含义参考下表:
枚举值 | 会话类型 |
---|---|
ConversationType_PRIVATE | 单聊会话 |
ConversationType_GROUP | 群组会话 |
ConversationType_ULTRAGROUP | 超级群会话 |
ConversationType_CHATROOM | 聊天室会话 |
ConversationType_SYSTEM | 系统会话 |
RCConversationType
枚举中还定义了其它会话类型,目前已废弃,不再维护。
单聊会话
指两个用户一对一进行聊天,两个用户间可以是好友也可以是陌生人,融云不对用户的关系进行维护管理,会话关系由融云负责建立并保持。
单聊类型会话里的消息会保存在客户端本地数据库中。
群组会话
群组指两个以上用户一起进行聊天,群组成员信息由 App 提供并进行维系,融云只负责将消息传达给群组中的所有用户。每个群最大人数上限为 3000 人,App 内的群组数量没有限制。
群组类型会话里的消息会保存在客户端本地数据库中。
超级群会话
超级群会话指无成员上限的多人聊天服务,海量消息并发即时到达,支持消息推送服务。群组成员信息由 App 提供并维系,融云负责将消息传达给群成员。App 内超级群数量没有限制,超级群无人数上限,一个用户可加入 100 个超级群。
超级群类型会话里的消息会保存在客户端本地数据库中,更多内容请参见超级群概述。
聊天室会话
聊天室成员不设用户上限,海量消息并发即时到达,用户退出聊天室后不会再接收到任何聊天室中的消息,没有推送通知功能。会话关系由融云负责建立并保持连接,通过 SDK 相关接口,可以让用户加入或者退出聊天室。
SDK 不保存聊天室消息,在退出聊天室时会清空此聊天室所有数据,更多内容请参见聊天室概述。
系统会话
系统 会话是指利用系统帐号向用户发送消息从而建立的会话关系,此类型会话可以是通过调用广播接口发送广播来建立,也可以是加好友等单条通知消息而建立的会话。
会话实体类
客户端 SDK 中封装的会话实体类是 RCConversation
,所有会话相关的信息都从该实体类中获取。
下表列出了 RCConversation
中提供的主要属性。
属性 | 类型 | 描述 |
---|---|---|
targetId | NSString | 会话 ID(或目标 ID),用于标识会话对端。
|
channelId | NSString | 该会话的业务标识,长度限制为 20 字符。仅适用于超级群。 |
conversationTitle | NSString | 会话标题。 |
conversationType | RCConversationType | 会话类型,参考上文详细描述。 |
unreadMessageCount | Int | 会话中未读消息数。 |
isTop | BOOL | 会话是否置顶。 |
lastestMessage | RCMessageContent | 会话中在客户端本地存储的最后一条消息的消息内容。关于 消息的存储属性请参考 消息介绍 中的说明。 |
lastestMessageId | long | 会话中最后一条在客户端本地存储的消息的 ID。 |
draft | NSString | 会话里保存的草稿信息,参考草稿详细说明。 |
objectName | NSString | 会话中最后一条消息的类型名,与消息内容体对应。预定义消息类型的 objectName 参见消息类型概述。自定义消息类型的 ObjectName 为您自行指定的值。 |
receivedTime | long long | 会话最后一条消息接收时间。 1. 返回值为 unix 时间戳,单位毫秒。 2. 接收时间为消息到达接收端时客户端的本地时间。 |
sentTime | long long | 会话最后一条消息发送时间,为 Unix 时间戳,单位毫秒 1. 当会话里最后一条消息为发送成功或者接收到的消息时,此方法返回的是该消息到达融云服务器的时间。 2. 当会话里最后一条消息为发送失败的消息时,此方法返回此条消息的本地发送时间。 3. 当会话有草稿信息,且草稿保存时间大于最后一条消息时间时,此方法返回草稿保存时间。 |
receivedStatus | RCReceivedStatus | 会话中最后一条消息的接收状态。 |
sentStatus | RCSentStatus | 会话中最后一条消息的发送状态。 |
senderUserId | NSString | 会话中最后一条消息发送者 ID。 |
lastestMessageDirection | RCMessageDirection | 会话中最后一条消息的方向,分为发送和接收。 |
lastestMessageUId | NSString | 会话中最后一条消息的唯一 ID。 1. 只有发送成功的消息才有唯一 Id。 2. 在同一个 Appkey 下全局唯一。 |
latestMessageReadReceiptInfo | RCReadReceiptInfo | 会话中最后一条消息的阅读回执状态,仅适用于群聊。 |
latestMessageMessageConfig | RCMessageConfig | 会话中最后一条消息的配置信息。 |
latestMessageCanIncludeExpansion | BOOL | 会话中最后一条消息是否可以包含扩展信息。 1. 该属性在消息发送时确定,发送之后不能再做修改; 2. 扩展信息只支持单聊、群组和超级群,其它会话类型不能设置扩展信息。 |
latestExpansion | NSDictionary | 会话中最后一条消息的扩展信息列表,详情请参考消息扩展。 |
hasUnreadMentioned | BOOL | 会话中是否存在被 @ 的消息 |
mentionedCount | int | 本会话里自己被 @ 的消息数量 |
blockStatus | RCConversationNotificationStatus | 会话的免打扰状态 |
notificationLevel | RCPushNotificationLevel | 会话的免打扰级别,详见免打扰功能概述。 |
channelType | RCUltraGroupChannelType | 超级群频道类型,只有 ConversationType 为超级群时该字段有效,非超级群时为 0 |
firstUnreadMsgSendTime | long long | 从 5.2.5 开始,支持会话中第一条未读消息发送时间属性,为 Unix 时间戳,单位毫秒。仅支持超级群会话。 |