第三期视频集成教程中,我们介绍了Android自定义消息的实现,有小伙伴留言问我们会有iOS版本吗,现在iOS版本来了!第六期视频教程我们将教大家如何快速实现iOS下IM自定义消息收发。
第六期
如何实现iOS下IM自定义消息收发
9分钟视频手把手教你接入
文档详解
前期准备
1. 注册网易云账号后,创建网易云信应用,获取对应的Appkey。
2. 在该应用下,注册账号(accid或account),并获取密码(token)。
集成思路
自定义消息概述:云信提供了几种基础的消息类型,但无法满足所有开发者的业务需求,自定义消息应运而生。自定义消息需要开发者实现的内容主要是三大部分:序列化、反序列化与注册自定义消息解析器,其余的工作SDK内部会自动处理好,无需开发者关心。
展现形式说明:在上期的基础上,引入一种带有主副标题的自定义消息。并实现一个专门的发送按钮来发送该类型的自定义消息。实现效果如下图所示:
具体步骤
1. 消息体构建:序列化
在上期工程的基础上,新建一个文件夹CustomChatCell,并再建一个子文件夹Message用于存放自定义消息本身代码文件。
首先在Message文件夹下创建一个名为NTESAttachment的NSObject的子类,遵循NIMCustomAttachment协议,用于承载自定义消息,并同时增加主副标题属性。
其次在NTESAttachment.m中实现NIMCustomAttachment协议的-encodeAttachment:方法,用于自定义消息附件的序列化。
Tip:若应用中有多种自定义消息类型,则需要创建多个类似NTESAttachment的类。
2. 解析器构建:反序列化
与步骤1相似,首先在Message文件夹下创建一个名为NTESAttachmentDecoder的NSObject的子类,遵循NIMCustomAttachmentCoding协议。
其次,在NTESAttachmentDecoder.m中实现NIMCustomAttachmentCoding协议的-decodeAttachment:方法,用于自定义消息附件的反序列化,即解析。
Tip:与步骤1中不同,针对应用中存在多种自定义消息类型时,不必创建多种解析器。该种情况下,建议是在自定义的附件内容中增加一个标记自定义类型的type字段。然后解析器针对不同的case走入不同的解析逻辑。
至此,自定义消息的序列化与反序列化已完毕。
3. 增加发送按钮
在CustomChatCell文件夹下新建一个遵循NIMSessionConfig协议的类NTESSessionConfig。并在原defaultMediaItems基础上新增一个自定义消息的发送按钮。并为之增加资源图片icon_custom_normal与icon_custom_pressed。
之后,将其注入到聊天页面NTESSessionViewController中,并为点击事件书写发送自定义消息的代码。
4. 消息气泡设计
在CustomChatCell文件夹下新建一个类NTESCellLayoutConfig,继承自NIMCellLayoutConfig。并在其实现部分书写三个方法:判断是否是自定义消息、设定自定义气泡的大小和加载的对应自定义气泡contentView。即若为自定义消息,则-cellContent:方法返回为NTESContentView。
接下来,我们进一步设计NTESContentView。继续在Message文件夹下创建一个继承自NIMSessionMessageContentView的类NTESContentView,并添加两个UILabel对象作为承载主副标题的属性。
在实现部分实现三个方法:
-initSessionMessageContentView:初始化方法,设计ContentView的样式。
-refresh:该方法负责自定义消息的数据填充。
layoutSubviews:负责设置样式布局。
5. 注册解析器
在云信SDK初始化代码后,增加自定义消息解析器的注册。
至此,自定义消息已经集成完毕,赶紧试试吧~
点击【阅读原文】
看更多集成视频教程