网易云信集成视频教程(六):如何快速实现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初始化代碼后,增加自定義消息解析器的注冊。
至此,自定義消息已經集成完畢,趕緊試試吧~
點擊【閱讀原文】
看更多集成視頻教程
總結
以上是生活随笔為你收集整理的网易云信集成视频教程(六):如何快速实现iOS下IM自定义消息收发?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无所不在的IM,网易云信潜心为移动社交时
- 下一篇: 如何搭建高接通率的音视频场景?