网易云信集成视频教程(六):如何快速实现iOS下IM自定义消息收发?
第三期視頻集成教程中,我們介紹了Android自定義消息的實(shí)現(xiàn),有小伙伴留言問我們會有iOS版本嗎,現(xiàn)在iOS版本來了!第六期視頻教程我們將教大家如何快速實(shí)現(xiàn)iOS下IM自定義消息收發(fā)。
第六期
如何實(shí)現(xiàn)iOS下IM自定義消息收發(fā)
9分鐘視頻手把手教你接入
文檔詳解
前期準(zhǔn)備
1. 注冊網(wǎng)易云賬號后,創(chuàng)建網(wǎng)易云信應(yīng)用,獲取對應(yīng)的Appkey。
2. 在該應(yīng)用下,注冊賬號(accid或account),并獲取密碼(token)。
集成思路
自定義消息概述:云信提供了幾種基礎(chǔ)的消息類型,但無法滿足所有開發(fā)者的業(yè)務(wù)需求,自定義消息應(yīng)運(yùn)而生。自定義消息需要開發(fā)者實(shí)現(xiàn)的內(nèi)容主要是三大部分:序列化、反序列化與注冊自定義消息解析器,其余的工作SDK內(nèi)部會自動處理好,無需開發(fā)者關(guān)心。
展現(xiàn)形式說明:在上期的基礎(chǔ)上,引入一種帶有主副標(biāo)題的自定義消息。并實(shí)現(xiàn)一個專門的發(fā)送按鈕來發(fā)送該類型的自定義消息。實(shí)現(xiàn)效果如下圖所示:
具體步驟
1. 消息體構(gòu)建:序列化
在上期工程的基礎(chǔ)上,新建一個文件夾CustomChatCell,并再建一個子文件夾Message用于存放自定義消息本身代碼文件。
首先在Message文件夾下創(chuàng)建一個名為NTESAttachment的NSObject的子類,遵循NIMCustomAttachment協(xié)議,用于承載自定義消息,并同時增加主副標(biāo)題屬性。
其次在NTESAttachment.m中實(shí)現(xiàn)NIMCustomAttachment協(xié)議的-encodeAttachment:方法,用于自定義消息附件的序列化。
Tip:若應(yīng)用中有多種自定義消息類型,則需要創(chuàng)建多個類似NTESAttachment的類。
2. 解析器構(gòu)建:反序列化
與步驟1相似,首先在Message文件夾下創(chuàng)建一個名為NTESAttachmentDecoder的NSObject的子類,遵循NIMCustomAttachmentCoding協(xié)議。
其次,在NTESAttachmentDecoder.m中實(shí)現(xiàn)NIMCustomAttachmentCoding協(xié)議的-decodeAttachment:方法,用于自定義消息附件的反序列化,即解析。
Tip:與步驟1中不同,針對應(yīng)用中存在多種自定義消息類型時,不必創(chuàng)建多種解析器。該種情況下,建議是在自定義的附件內(nèi)容中增加一個標(biāo)記自定義類型的type字段。然后解析器針對不同的case走入不同的解析邏輯。
至此,自定義消息的序列化與反序列化已完畢。
3. 增加發(fā)送按鈕
在CustomChatCell文件夾下新建一個遵循NIMSessionConfig協(xié)議的類NTESSessionConfig。并在原defaultMediaItems基礎(chǔ)上新增一個自定義消息的發(fā)送按鈕。并為之增加資源圖片icon_custom_normal與icon_custom_pressed。
之后,將其注入到聊天頁面NTESSessionViewController中,并為點(diǎn)擊事件書寫發(fā)送自定義消息的代碼。
4. 消息氣泡設(shè)計
在CustomChatCell文件夾下新建一個類NTESCellLayoutConfig,繼承自NIMCellLayoutConfig。并在其實(shí)現(xiàn)部分書寫三個方法:判斷是否是自定義消息、設(shè)定自定義氣泡的大小和加載的對應(yīng)自定義氣泡contentView。即若為自定義消息,則-cellContent:方法返回為NTESContentView。
接下來,我們進(jìn)一步設(shè)計NTESContentView。繼續(xù)在Message文件夾下創(chuàng)建一個繼承自NIMSessionMessageContentView的類NTESContentView,并添加兩個UILabel對象作為承載主副標(biāo)題的屬性。
在實(shí)現(xiàn)部分實(shí)現(xiàn)三個方法:
-initSessionMessageContentView:初始化方法,設(shè)計ContentView的樣式。
-refresh:該方法負(fù)責(zé)自定義消息的數(shù)據(jù)填充。
layoutSubviews:負(fù)責(zé)設(shè)置樣式布局。
5. 注冊解析器
在云信SDK初始化代碼后,增加自定義消息解析器的注冊。
至此,自定義消息已經(jīng)集成完畢,趕緊試試吧~
點(diǎn)擊【閱讀原文】
看更多集成視頻教程
總結(jié)
以上是生活随笔為你收集整理的网易云信集成视频教程(六):如何快速实现iOS下IM自定义消息收发?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无所不在的IM,网易云信潜心为移动社交时
- 下一篇: 如何搭建高接通率的音视频场景?