网易云信集成视频教程(六):如何快速实现iOS下IM自定义消息收发?

第三期视频集成教程中,我们介绍了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初始化代码后,增加自定义消息解析器的注册。

至此,自定义消息已经集成完毕,赶紧试试吧~

点击【阅读原文】

看更多集成视频教程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值