一、添加自定义消息
注册消息
注册消息共分为四步。
- 定义消息类型
- 注册消息类型
- 定义消息 Cell
- 注册消息 Cell
(一)定义消息类型
(1)自定义消息集成自RCMessageContent
(2)遵循RCMessageCoding协议
RCMessageCoding 主要有三个功能:
- 提供消息唯一标识符
- 消息发送时将消息中的所有信息编码为 JSON 数据传输
- 消息接收时将 JSON 数据解码还原为消息对象。
该协议为必须遵守的协议,遵守该协议需实现下面三个方
法。
-(void)encode;
- (void)decodeWithData;
- (NSString *)getObject方法
摘要
(3) 内容摘要协议
协议原型:
@protocol RCMessageContentView
RCMessageContentView 主要有一个功能:
- 设置此消息在会话列表和本地通知中显示消息的摘要
- 该协议为非必须遵守的协议,遵守该协议需实现下面方法。
设置消息摘要:
- (NSString *)conversationDigest;
(二)注册消息类型
开发者在进行完自定义消息类后,需要在 SDK init 之后,注册此自定义消息类。
[[RCIM sharedRCIM] registerMessageType:[MJCSProductMessage class]];
(三)自定义消息
开发者可根据自己的业务需求是否需要显示用户信息来选择继承消息 Cell。
- 不包含用户头像和昵称
类名:
RCMessageBaseCell
1
结构图:

控件需要添加在 baseContentView
上,建议在 baseContentView
上方预留 10
- 含用户头像和昵称
类名:
RCMessageCell
1
结构图:

控件需要添加在 messageContentView
上,根据需求在画 Cell 视图布局的时候调整 messageContentView
的 frame ,如果是接收方,只需要修改 messageContentView
的 width
和 height
,如果是发送方,需要修改 messageContentView
的 x
、 width
和 height
。
开发者需要在 Cell 的初始化中布局,并重写下面方法来返回 Cell 的 Size
。当显示自定义消息时,必须实现该方法来返回 Cell 的 Size
。
注册消息 Cell
(四)注册cell
SDK 需要开发者在会话页面注册您定义的消息 Cell 并绑定您的消息类型
- (void)registerClass:(Class)cellClass forMessageClass:(Class)messageClass;
二、自定义消息添加点击事件
①在自定义cell中添加tap点击事件,
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTextMessage:)];
[self.backView addGestureRecognizer:tap];
②实现tap事件,在tap事件中判断代理是否实现了如下方法,
// 在此方法中,
- (void)tapTextMessage:(UIGestureRecognizer *)gestureRecognizer {
if ([self.delegate respondsToSelector:@selector(didTapMessageCell:)]) {
[self.delegate didTapMessageCell:self.model];
}
}
③调用SDK中的cell点击事件回调
SDK在此点击事件中,针对SDK中自带的图片、语音、位置等消息有默认的处理,如查看、播放等。
您在重写此回调时,如果想保留SDK原有的功能,需要注意调用super。
- (void)didTapMessageCell:(RCMessageModel *)model;
在如上方法中添加自定义cell的点击事件
网友评论