RongCLoud即時(shí)通訊學(xué)習(xí)筆記

1、前期準(zhǔn)備:需要在融云注冊app,獲取appkey在AppDelegate中進(jìn)行注冊。環(huán)境分為開發(fā)環(huán)境和生產(chǎn)環(huán)境,調(diào)試可以用開發(fā)環(huán)境,app上線需要注冊生產(chǎn)環(huán)境。

2、獲取用戶token(用來用戶身份認(rèn)證的,通過用戶的token,獲取用戶的信息)的過程:

如果沒有服務(wù)器,融云提供了調(diào)試的接口,點(diǎn)擊提交即可獲取token來進(jìn)行測試:

3、獲取到token之后就可以調(diào)用-connectWithToken:success:error:tokenIncorrect:? 方法與融云服務(wù)器建立連接,這個(gè)方法在程序運(yùn)行過程中只需要調(diào)用一次,在網(wǎng)絡(luò)斷開或者前后臺切換的情況下,會自動重連,除非是手動斷開連接,是需要再次調(diào)用該方法進(jìn)行重連。

需要注意兩點(diǎn):

? ? ? 一、該方法有一個(gè)成功的回調(diào)和一個(gè)錯(cuò)誤的回調(diào),在錯(cuò)誤回調(diào)中,有一種錯(cuò)誤狀態(tài)是本來已經(jīng)連接成功的,需要進(jìn)行判斷:

? ? 二、登陸成功之后,可以將token存到沙盒偏好設(shè)置中進(jìn)行存儲。需要注意,該方法的回調(diào)是在子線程中進(jìn)行的,如果需要進(jìn)行ui操作,需要切換到主線程。

4、登陸成功,跳轉(zhuǎn)到會話列表控制器,融云已經(jīng)提供了一個(gè)會話列表控制器 (RCConversationListViewController),我們可以創(chuàng)建一個(gè)控制器繼承自RCConversationListViewController。屬性displayConversationTypeArray可以設(shè)置顯示的聊天類型(單聊、討論組、群聊、聊天室、客服等)。

會發(fā)現(xiàn)會話列表中的用戶頭像和用戶名字不顯示,為了解決這個(gè)問題,需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的類,遵守協(xié)議RCIMUserInfoDateSource,這個(gè)類用來管理用戶信息的,用戶信息可以從服務(wù)器或者緩存中讀取,可以獲取用戶信息、緩存用戶信息、刪除用戶信息。然后將這個(gè)類初始化,傳給[RCIM sharedRCIM],RCIM就可以從該類中讀取用戶信息。

5、會話界面,融云也提供了一個(gè)控制器類(RCConversationViewController),同樣創(chuàng)建一個(gè)控制器繼承自它,初始化方法中需要傳遞displayConversationTypeArray和targetId(和誰進(jìn)行會話)。

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

分兩步:

第一步:自定義消息并注冊消息類型:需要繼承自RCMessageContent類,實(shí)現(xiàn)三個(gè)協(xié)議:

消息發(fā)送的流程:

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

第二步:自定義cell并注冊cell(繼承自融云提供的RCMessageBaseCell或RCMessageCell(布局更復(fù)雜))

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

自定義cell需要有三步,第一步注冊cell(register方法,和collectionView注冊方法相似),第二步返回cell item實(shí)例的方法

這個(gè)方法當(dāng)只有自定義cell的時(shí)候才會調(diào)用,例如文本消息、圖片消息、語音消息不是自定義的就不會走這個(gè)方法。

第三步,實(shí)現(xiàn)返回cell大小的方法。

6、發(fā)送紅包功能

在會話控制器的父類RCConversationViewController中有一個(gè)屬性 RCPluhinBoardView * pluginBoardView,擴(kuò)展功能板view,可以擴(kuò)展發(fā)送地理位置、圖片、紅包等功能。

使用該view下面的方法,可以添加擴(kuò)展項(xiàng)。

實(shí)現(xiàn)該view的代理方法,在代理方法中監(jiān)聽到點(diǎn)擊某個(gè)擴(kuò)展項(xiàng)的回調(diào),可以根據(jù)上面方法中的tag值進(jìn)行相應(yīng)的處理。

發(fā)送消息時(shí)會調(diào)用下面的方法

方法中的參數(shù)說明和注意事項(xiàng)如下:

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

自定義紅包c(diǎn)ell類,繼承自RCMessageCell類,這個(gè)cell類中有一個(gè)messageContentView,是用來放消息內(nèi)容的視圖,這個(gè)視圖有一個(gè)setEventBlock:,cell大小發(fā)生改變的時(shí)候調(diào)用該方法,可以給消息中子視圖重新布局。

7、撤回消息:

撤回消息的實(shí)現(xiàn)流程,長按消息,消息上方出現(xiàn)復(fù)制/刪除/撤回的視圖,點(diǎn)擊撤回,刪除該條消息本地存儲,發(fā)送給融云服務(wù)器,服務(wù)器告訴對方客戶端這是一條撤回消息,進(jìn)行撤回。

當(dāng)點(diǎn)擊消息cell時(shí),會觸發(fā)下面的方法,在UIMenuControlle為消息上方出現(xiàn)的消息處理視圖

在recall: 方法中需要做的處理是發(fā)送一條撤回消息,撤回消息cell和紅包消息cell一樣需要自定義,也需要一個(gè)繼承自RCMessageContent的messageContent類,但是撤回消息需要進(jìn)行本地存儲,但不需要計(jì)入未讀數(shù)。

然后將該撤回消息發(fā)送給對方客戶端,把當(dāng)前的長按消息刪除掉。本地消息刪除掉了,遠(yuǎn)程的怎么刪除:

實(shí)現(xiàn)上面的代碼,在下面的代碼中接收撤回消息

先判斷是否是撤回消息,然后從當(dāng)前消息列表中找是否有該消息,然后進(jìn)行刪除

自定義撤回消息cell,只需要繼承自RCMessageBaseCell,自定義里面的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,282評論 0 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 相信大家在項(xiàng)目中會用到即時(shí)通訊功能,自己去寫的話會需要前后臺合作,會大大加大開發(fā)的周期,所以考慮使用第三方的即時(shí)通...
    ProgrammerChan閱讀 8,758評論 16 38
  • 理財(cái)和金融類:《窮查理寶典》《一本書讀懂財(cái)報(bào)》《激蕩三十年1》《激蕩三十年2》《鄧普頓教你逆向投資》《彼得林奇的成...
    子非_似是而非閱讀 154評論 0 0
  • 核果,雨。
    M有如果閱讀 197評論 5 4

友情鏈接更多精彩內(nèi)容