融云发送图片消息_融云 SDK 消息结构详解

本文详细介绍了融云 SDK 的消息结构,包括会话实体、消息实体、消息类型以及如何标识一个会话。重点讲解了图片消息的发送,如 TextMessage、VoiceMessage、ImageMessage 等,并阐述了内容类、通知类、状态类和信令类消息的定义和使用场景。此外,还提到了消息的存储和计数规则以及如何携带用户信息。
摘要由CSDN通过智能技术生成

融云 SDK 消息结构详解

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

会话与消息的关系

融云 Android、iOS、桌面版 SDK 中已经默认包含了消息数据的本地存储机制,开发者不再需要自己进行消息的存储。也就是说,在融云 SDK 收到消息后,先在本地进行了数据存储,然后再通过消息接收事件通知给开发者。开发者可以通过一系列接口读取和操作本地存储的消息数据。

会话实体和消息实体

会话实体类和消息实体类是用来存储本地会话和消息的容器类,除了包含会话内容和消息内容外,还包括了保存在本地的各种状态。

用来存储消息的实体类主要有 Conversation(会话) 和 Message(消息) 两个实体类,您在客户端读取消息时,获取的对象都和这两个类相关。会话有多种类型,可以是私聊会话,也可以是群组会话等,每一个 Conversation(会话)包含多条 Message(消息),关系如下图所示:

如何标识一个会话

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

会话名称

会话类型枚举 ConversationType

对应的 targetId

单聊

PRIVATE

用户的 Id(userId)

群组

GROUP

群组的 Id(groupId)

聊天室

CHATROOM

聊天室的 Id(chatroomId)

客服

CUSTOMER_SERVICE

客服的 Id(customerServiceId)

系统会话

SYSTEM

系统账户 Id。可以理解为 QQ 的 10000 号的角色

应用公众服务

APP_PUBLIC_SERVICE

应用公众服务的 Id(publicServiceId)

公众服务

PUBLIC_SERVICE

公众服务的 Id(publicServiceId)

请注意区分会话类型和消息类型,会话类型是针对会话的分类,不同的会话类型决定了不同的会话逻辑。

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

消息的定义

消息类(MessageContent 的子类)不同于消息实体类(Message),消息类代表一条具体的消息内容,消息实体类是消息类的外层容器,消息实体对象是消息对象在本地存储的外层对象,消息实体对象除了包含消息对象外,还包括消息的方向、接收状态、接收时间、发送者等。

融云单条消息大小不超过 128k

消息基类

MessageContent 是融云的消息基类,所有消息类都继承于 MessageContent 类。需要注意的是,MessageContent 类和 Message 类之间的关系:Message 中包含了一个具体的继承自 MessageContent 的消息,就是 Content 属性,可以通过 setContent() 和 getContent() 进行存取。

约定:如果您要定义一个内容类消息(需要显示在聊天会话界面中,且不是通知类消息),请从 MessageContent 类继承,命名为 XxxxxMessage。

内容消息表示一个用户间发送的包含具体内容的消息,需要展现在聊天界面上,如文字消息、语音消息等。

消息的分类

消息分类

消息行为状态标识

内容类消息

表示一个用户间发送的包含具体内容的消息,需要展现在聊天界面上,如文字消息、语音消息等。

通知类消息

表示一个通知信息,可能展现在聊天界面上,如提示条通知。

状态类消息

表示一个状态,用来实现如“对方正在输入”的功能。

信令类消息

融云在实现 SDK 自身业务功能时使用的,开发者不需要对其做任何处理。

内容类消息

消息类型

ObjectName

类名

是否计数

是否存储

RC:TxtMsg

TextMessage

RC:VcMsg

VoiceMessage

RC:HQVCMsg

HQVoiceMessage

RC:ImgMsg

ImageMessage

RC:GIFMsg

GIFMessage

RC:ImgTextMsg

RichContentMessage

RC:FileMsg

FileMessage

RC:LBSMsg

LocationMessage

RC:SightMsg

SightMessage

RC:PSImgTxtMsg

PublicServiceRichContentMessage

RC:PSMultiImgTxtMsg

PublicServiceMultiRichContentMessage

注:为了符合 iOS 平台的命名规则,在 iOS SDK 中类名前增加 RC 前缀,如:RCTextMessage。

通知类消息

消息类型

ObjectName

类名

是否计数

是否存储

RC:ContactNtf

ContactNotificationMessage

RC:ProfileNtf

ProfileNotificationMessage

RC:CmdNtf

CommandNotificationMessage

RC:InfoNtf

InformationNotificationMessage

RC:GrpNtf

GroupNotificationMessage

RC:ReadNtf

ReadReceiptMessage

RC:PSCmd

PublicServiceCommandMessage

RC:CmdMsg

CommandMessage

注:为了符合 iOS 平台的命名规则,在 iOS SDK 中类名前增加 RC 前缀,如:RCCommandMessage。

状态类消息

消息类型

ObjectName

类名

是否计数

是否存储

RC:TypSts

TypingStatusMessage

RC:RRRspMsg

ReadReceiptResponseMessage

注:为了符合 iOS 平台的命名规则,在 iOS SDK 中类名前增加 RC 前缀,如:RCTypingStatusMessage。

是否计数:表示客户端收到消息后,是否进行未读消息计数(未读消息数增加 1),所有内容型消息都应该设置此值。

是否存储:表示客户端收到消息后,是否进行存储,并在之后可以通过接口查询。

内置内容类消息

文字消息

用来发送文字类消息,其中可以包括表情、超链接(会自动识别),客户端收到消息后计入未读消息数、进行存储。

消息类名:TextMessage

消息 ObjectName:RC:TxtMsg

消息的结构:

{

"content":"Hello world!",

"extra":""

}名称

说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值