融云 iOS消息体系架构详解

融云 iOS SDK 体系架构

本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品。

image
融云 SDK 系统架构

IMKit

IMKit 的功能主要是封装各种界面对象,服务于开发者快速实现自己的产品,主要特点是是支持快速集成,支持丰富的界面定制功能。

IMLib

IMLib 的功能是提供基本通信能力库,封装了通信能力和 Conversation,Message 等各种对象,服务于需要根据自己的产品去自己实现界面的开发者。主要特点是封装清晰,轻量,便于使用。

Protocol

Protocol 是融云的核心协议栈,使用融云自定义的私有二进制协议。主要特点是是轻量化,有序可靠,不丢消息。Protocol 部分使用 Native 语言开发,在 Android 和 iOS 平台上保证业务一致性,便于开发者商用化自己的产品。

IMLib 体系架构

首先介绍 IMLib 的体系,对于真正使用融云 SDK 的用户,不管您选择 IMLib 还是 IMKit,您都需要了解一下体系概念。

image
融云 IMLib 体系架构
IMLib 的命名规则,在 iOS 上是 RCIMClient,在 Android 上是 RongIMClient。这是为了符合两个平台的命名习惯。

核心类

RCIMClinet 是 IMLib 的核心类,您可以直接使用它的方法,如 init,connect,setdevicetoken,sendMessage, sendImageMessage 等。您需要详细的了解所有接口的用法,请参考 API 文档。

会话实体类

RCConversation 是会话实体类,首先您需要充分的了解 Conversation(会话) 和 Message(消息) 两个实体类的关系。

会话实体类和消息实体类是用来存储本地会话和消息的容器类,除了包含会话内容和消息内容外,还包括了保存在本地的各种状态,您在客户端读取消息时,获取的对象都和这两个类相关。会话有多种类型,可以是私聊会话,也可以是群组会话等,每一个 Conversation(会话)包含多条 Message(消息),关系如下图所示:

image

通过 conversationType 和 targetId,可以唯一确定一个会话。ConversationType 枚举值意义和对应的 targetId 意义为:

会话类型枚举 ConversationType 说明 对应的 targetId
PRIVATE 单聊 用户的 Id(userId)。
GROUP 群组 群组的 Id(groupId)。
DISCUSSION 讨论组 讨论组的 Id(discussionId)。
CHATROOM 聊天室 聊天室的 Id(chatroomId)。
CUSTOMER_SERVICE 客服 客服的 Id(customerServiceId)。
SYSTEM 系统会话 系统账户 Id。可以理解为 QQ 的 10000 号的角色。
APP_PUBLIC_SERVICE 应用公众服务 应用公众服务的 Id(publicServiceId)。
PUBLIC_SERVICE 公众服务 公众服务的 Id(publicServiceId)。
请注意区分会话类型和消息类型,会话类型是针对会话的分类,不同的会话类型决定了不同的会话逻辑。

另:系统会话类型并不一定代表是“系统消息”,本质上与单聊会话类型没有区别,只是逻辑上做了不同的区分,便于展开不同的产品业务逻辑。

通过一个 conversationType 和 targetId 组合,您可以确定一个唯一的会话。如当您需要发起单聊会话时,您需要传入 ConversationType_PRIVATE 和 userId,当您需要发起群组聊天时,您需要传入 ConversationType_GROUP 和 groupId,当您需要发起讨论组会话时,您需要传入 ConversationType_DISCUSSION 和 discussionId。

消息实体类

RCMessage 是消息实体类,消息实体类是消息类的外层容器,消息实体对象是消息对象在本地存储的外层对象,消息实体对象封装了消息的基本信息如类型、 ID、消息的方向、接收状态、接收时间、发送者等。您可能需要先了解其中两个成员参数的概念。

objectName

代表消息内容的类型,是一个标示符(Identifier),融云内置消息类型以 RC: 开头,如 RC:TxtMsg,RC:ImgMsg,RC:VcMsg 等。

content

消息类,一个 RCMessageContent 类型的对象,代表着实际的消息。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值