RongCLoud即時通信學習筆記

一、前期準備:須要在融雲註冊app,獲取appkey在AppDelegate中進行註冊。環境分爲開發環境和生產環境,調試能夠用開發環境,app上線須要註冊生產環境。json

二、獲取用戶token(用來用戶身份認證的,經過用戶的token,獲取用戶的信息)的過程:緩存

 

若是沒有服務器,融雲提供了調試的接口,點擊提交便可獲取token來進行測試:服務器

 

三、獲取到token以後就能夠調用-connectWithToken:success:error:tokenIncorrect:  方法與融雲服務器創建鏈接,這個方法在程序運行過程當中只須要調用一次,在網絡斷開或者先後臺切換的狀況下,會自動重連,除非是手動斷開鏈接,是須要再次調用該方法進行重連。網絡

須要注意兩點:app

      1、該方法有一個成功的回調和一個錯誤的回調,在錯誤回調中,有一種錯誤狀態是原本已經鏈接成功的,須要進行判斷:佈局

 

    2、登錄成功以後,能夠將token存到沙盒偏好設置中進行存儲。須要注意,該方法的回調是在子線程中進行的,若是須要進行ui操做,須要切換到主線程。測試

四、登錄成功,跳轉到會話列表控制器,融雲已經提供了一個會話列表控制器 (RCConversationListViewController),咱們能夠建立一個控制器繼承自RCConversationListViewController。屬性displayConversationTypeArray能夠設置顯示的聊天類型(單聊、討論組、羣聊、聊天室、客服等)。ui

會發現會話列表中的用戶頭像和用戶名字不顯示,爲了解決這個問題,須要建立一個單獨的類,遵照協議RCIMUserInfoDateSource,這個類用來管理用戶信息的,用戶信息能夠從服務器或者緩存中讀取,能夠獲取用戶信息、緩存用戶信息、刪除用戶信息。而後將這個類初始化,傳給[RCIM sharedRCIM],RCIM就能夠從該類中讀取用戶信息。編碼

五、會話界面,融雲也提供了一個控制器類(RCConversationViewController),一樣建立一個控制器繼承自它,初始化方法中須要傳遞displayConversationTypeArray和targetId(和誰進行會話)。線程

自定義消息cell(文字、表情、紅包、位置、語音)等:

分兩步:

第一步:自定義消息並註冊消息類型:須要繼承自RCMessageContent類,實現三個協議:

 

消息發送的流程:

 

消息接收流程,下圖主要介紹的是離線接收消息:

 

第二步:自定義cell並註冊cell(繼承自融雲提供的RCMessageBaseCell或RCMessageCell(佈局更復雜))

這兩種cell的區別:第二種有頭像和名字,第一種沒有。

自定義cell須要有三步,第一步註冊cell(register方法,和collectionView註冊方法類似),第二步返回cell item實例的方法

 

這個方法當只有自定義cell的時候纔會調用,例如文本消息、圖片消息、語音消息不是自定義的就不會走這個方法。

第三步,實現返回cell大小的方法。

六、發送紅包功能

在會話控制器的父類RCConversationViewController中有一個屬性 RCPluhinBoardView * pluginBoardView,擴展功能板view,能夠擴展發送地理位置、圖片、紅包等功能。

使用該view下面的方法,能夠添加擴展項。

 

實現該view的代理方法,在代理方法中監聽到點擊某個擴展項的回調,能夠根據上面方法中的tag值進行相應的處理。

發送消息時會調用下面的方法

 

方法中的參數說明和注意事項以下:

 
 

自定義紅包消息類,繼承自第五條提到的RCMessageContent,紅包須要有兩個屬性,amount(紅包金額),desc(描述)。而後實現RCMessageContent中的三個協議的方法,第一個協議RCMessageCoding,進行json之間的編碼和解碼;第二個協議RCMessagePersistentCompatible,是否須要存入本地和計入未讀數,紅包消息是須要進行本地存儲和進行未讀數的,只要返回枚舉的第三個選項便可;第三個協議RCMessageContentView,在會話列表中顯示的紅包消息摘要內容。

自定義紅包cell類,繼承自RCMessageCell類,這個cell類中有一個messageContentView,是用來放消息內容的視圖,這個視圖有一個setEventBlock:,cell大小發生改變的時候調用該方法,能夠給消息中子視圖從新佈局。

七、撤回消息:

撤回消息的實現流程,長按消息,消息上方出現複製/刪除/撤回的視圖,點擊撤回,刪除該條消息本地存儲,發送給融雲服務器,服務器告訴對方客戶端這是一條撤回消息,進行撤回。

當點擊消息cell時,會觸發下面的方法,在UIMenuControlle爲消息上方出現的消息處理視圖

 

在recall: 方法中須要作的處理是發送一條撤回消息,撤回消息cell和紅包消息cell同樣須要自定義,也須要一個繼承自RCMessageContent的messageContent類,可是撤回消息須要進行本地存儲,但不須要計入未讀數。

而後將該撤回消息發送給對方客戶端,把當前的長按消息刪除掉。本地消息刪除掉了,遠程的怎麼刪除:

 

實現上面的代碼,在下面的代碼中接收撤回消息

 

先判斷是不是撤回消息,而後從當前消息列表中找是否有該消息,而後進行刪除

自定義撤回消息cell,只須要繼承自RCMessageBaseCell,自定義裏面的內容。

相關文章
相關標籤/搜索