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

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

点击【阅读原文】

看更多集成视频教程

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

  1. 网易云信集成视频教程(四):如何快速实现iOS登录登出?

    上期我们介绍了如何通过SDK实现自定义消息,第四期视频教程我们将教大家如何快速实现iOS系统下IM登录登出. 第四期 如何快速实现iOS登录登出? 8分钟视频手把手教你接入 文档详解 前期准备 1. ...

  2. 网易云信集成视频教程(一):如何快速实现安卓登录登出?

    由于网易云信稳定.可靠的技术服务以及拥有深厚积淀的行业口碑,越来越多用户集成云信IM和音视频功能.为了提升用户集成效率,我们推出了一系列网易云信集成视频教程,希望帮助用户快速实现功能接入.第一期将为大 ...

  3. 网易云信集成视频教程(三):如何通过SDK实现自定义消息?

    上期我们介绍了Android如何通过Uikit集成单聊模块,第三期视频教程我们将教大家如何通过SDK实现自定义消息. 前期准备 从官网开发文档自定义消息流程(https://dev.yunxin.16 ...

  4. Android 网易云信获取图片,Android 网易云信集成(一)

    网易云信流程与账号管理 关于网易云信的注册还有应用管理就不说了,先说下网易云信的通信流程,只有清楚流程,你才能知道自己要做什么. 先是你的服务器端拿着accid还有其他参数发给网易云信,生成一个tok ...

  5. 网易云信入选《SegmentFault 思否 2019 中国技术品牌影响力企业榜单》!

    近日,SegmentFault 思否作为中国最大的新一代开发者社区,依托数百万开发者用户行为数据,及科技企业技术品牌在国内市场的大数据分析,评选出 30 家在开发者领域最具影响力的科技企业,权威发布& ...

  6. 云信小课堂|5分钟快速实现iOS端PK连麦场景

    Vol. 4 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...

  7. 保障IM推送、优化移动网络 网易云信解决移动IM稳定难题

    引用内容"IM本身是一个比较复杂和庞大的系统,在客户端开发时,也就会涉及到很多繁杂的业务需求.当绝大多数IM平台商都在朝向功能化的一站化大潮流迈进时,唯有云信不忘静下心来沉淀内功.云信针对移 ...

  8. 来答疑了!关于网易云信 Innovation 2022 开发者大赛,你想知道的都在这儿!

    9 月 8 日,网易云信 Innovation 2022 开发者大赛正式开赛并启动报名.本次大赛,"网易云信"携手"网易互娱学习发展",联合举办网易游戏高校 M ...

  9. 厚积方可薄发 看网易云信在业内如何“弯道超车”

    随着互联网的发展,IM功能正变得越来越重要.以往封闭.单一的沟通方式,逐渐被功能丰富.交互更生动的IM即时通讯取代,以满足新时代个性化和多样化的社交需求.另一方面,随着互联网+上升为国家战略,不少传统 ...

最新文章

  1. 第7章 PCA与梯度上升法
  2. 解决Failed to connect session for conifg 故障
  3. iOS应用开发视频教程笔记(二)My First iOS App
  4. Android自定义控件入门实践之雷达扫描控件
  5. notification源码分析_Ceilometer之notification agent代码分析
  6. HTML/CSS/JavaScript学习笔记【持续更新】
  7. jQuery学习之二---jq核心
  8. 填坑 ---- arcgis api for javascript 加载天地图
  9. keepalived+lvs实现高可用的负载均衡
  10. 第8章 面向对象高级编程与网络编程
  11. 【DCVRP】基于matlab蚁群算法求解带容量+距离的车辆路径规划问题【含Matlab源码 1038期】
  12. Maya: Render Setup System Maya教程:渲染设置系统 Lynda课程中文字幕
  13. 精美的拟态个人主页源码
  14. QCC,让在学校的我们感受公司的温暖
  15. 数据归档,冷热数据分离
  16. 教室计算机英语怎么读,教室的英语怎么读
  17. MacBook连接显示器发热的解决方法
  18. linux私房菜总结(0-1)
  19. VirtualBox 共享粘贴板失效 安装增强功能时提示 未能加载虚拟光盘到虚拟电脑
  20. 用计算机搞音乐,用电脑键盘做音乐

热门文章

  1. 重载操作符与转换(上)
  2. Android开发(七)——判断网络状态
  3. [UML]UML系列——状态机图statechart diagram
  4. Linux kernel分析前的准备
  5. 中医药可投期刊推荐-24本-2021版
  6. 2021-11-14Collection
  7. java spring异常处理_Java深入 - Spring 异常处理HandlerExceptionResolver
  8. zeekooper集群搭建_Zookeeper与Kafka集群搭建完整教程
  9. 实践操作--云端深度学习工作站配置指南(转)
  10. 编写AXI4协议读写BRAM并仿真验证