阿里百川即時通訊 梳理

1失受、YWAPI App初始化類

協(xié)議:IYWPushService,設(shè)置推送接收block
根據(jù)block中的字典獲得app的啟動狀態(tài)和會話屬性妙黍,從而做不同的操作

fetchIMKitForOpenIM 首次獲取YWIMKit對象,并全局持有,如果獲得該對象砍的,則不用獲取下面的對象了,該對象是openIM的UI接口莺治,并自動持有一個YWIMCore對象
fetchNewIMCore 首次獲得一個YWIMCore對象廓鞠,并全局持有


2、YWIMKit 即時通訊UI層封裝谣旁,遵循床佳,是IM內(nèi)部封裝的UI操作,自定義要求不高可以直接使用

  • 小規(guī)模自定義:IYWUIService內(nèi)部定義的一系列屬性及block回調(diào)榄审,用于自定義局部自定義控件
    openxxxxx 打開某個界面并進(jìn)入(界面使用默認(rèn)的)
    makexxxxx 獲得某個界面(一般用來做自定義界面)
    dissmiss 關(guān)于IMUI界面砌们,不會斷開登錄

  • 完全自定義:如果想要完全自定義控件,則UI層的代碼都需要自己重新寫搁进,數(shù)據(jù)獲取和通訊的連接使用IMCore屬性

YWIMKit中的UI界面控制器浪感,操作小規(guī)模自定義UI

1.YWConversationListViewController 會話列表界面
以下操作都是經(jīng)過block來設(shè)置的,在用到的時候
(1)刪除拷获,點(diǎn)擊某個會話的回調(diào) 可以設(shè)置
(2)無數(shù)據(jù)是的view可以自定義viewForNoData
(3)列表頁左滑顯示item篮撑,可以自定義,根據(jù)會話對象YWConversation
(4)自定義cell行高匆瓜,根據(jù)會話對象YWConversation
(5)自定義cell赢笨,根據(jù)會話對象YWConversation
(6)自定義頭像點(diǎn)擊block(比如點(diǎn)擊頭像要進(jìn)入個人空間,則需要定義這個)

自定義創(chuàng)建cell.png
自定義配置cell.png
自定義的cell

默認(rèn)的cell

從上面的展示可以看出驮吱,自定義cell的實現(xiàn)只要設(shè)置如上圖代碼的兩個回調(diào)即可
分析上下效果圖茧妒,可以知道自定義cell還需要實現(xiàn)哪些功能和接口
(1)群聊和單聊conversation需要判斷,并獲得數(shù)據(jù)展示不同的效果左冬,群聊需要獲得群名
(2)表情的處理桐筏,還需要實現(xiàn)表情的富文本處理
相對來說,默認(rèn)的cell功能比較全拇砰,界面清新梅忌,且使用簡單狰腌,所以使用默認(rèn)的cell即可,也可以對某種類型的conversation做自定義牧氮。

2.YWConversationViewController 單聊界面或群聊界面琼腔,即聊天界面
功能:各類自定義,發(fā)送消息(多種消息踱葛,在聊天頁面不完全自定義丹莲,即不用自己的tableview和輸入框的情況下,發(fā)送消息基本用不上尸诽,IM UI 已經(jīng)封裝到Y(jié)WConversationViewController去了)
(1)自定義插件
普通的YWConversationViewController 甥材,不帶插件,需要自己添加性含,默認(rèn)的插件有4個洲赵,也可以自己添加,自定義插件需要實現(xiàn)YWInputViewPluginProtocol協(xié)議商蕴,并實現(xiàn)協(xié)議方法板鬓,比如點(diǎn)擊事件的回調(diào)、插件的名稱究恤、圖標(biāo)等等。用法可以參考上面的默認(rèn)插件

在自定義聊天界面的情況下后德,不想自定義插件部宿,只需要這些默認(rèn)插件,則可以調(diào)用
addDefaultInputViewPluginsToMessagesListController方法來添加默認(rèn)插件

插件名 作用
YWInputViewPluginTakePhoto 拍照并發(fā)送圖片
YWInputViewPluginPhotoPicker 從相冊選擇并發(fā)送圖片
YWInputViewPluginLocationPicker 選擇地理位置并發(fā)送
YWInputViewPluginEmoticonPicker 表情

(2) 自定義表情
YW_TGZ_Emoitons.emo 文件是可以解壓縮查看
可以自定義插件tab點(diǎn)擊處理瓢湃,發(fā)送按鈕的處理理张,添加表情插件到指定位置等

(3)其他自定義

插件名 作用
customTopView 頂部自定義圖片,bounds可以自己設(shè)置绵患,位置默認(rèn)居中雾叭,但意義不明~因為會擋住聊天界面
backgroundImage 聊天頁面背景圖片,可以做成用戶自定義
messageCustomMenuItemsBlock 自定義消息長按功能落蝙,返回數(shù)組(元素是YWMoreActionItem)
viewForNoData 沒數(shù)據(jù)的時候织狐,顯示的視圖,bounds默認(rèn)是整個頁面
disableTitleOnlineDisplay 是否支持在線顯示
disableTextShowInFullScreen 是否支持文字雙擊放大

3.可以自定義設(shè)置頭像的填充模式和圓角半徑
4.自定義IM服務(wù)器顯示用戶profile的來源fetchProfileForPersonBlock(一般用我方服務(wù)器根據(jù)personID查詢用戶信息筏勒,然后把頭像移迫,昵稱等發(fā)送到IM服務(wù)器,發(fā)送成功后會在本地緩存一定時間管行,這個時間也可以自定義profileCacheExpireTime)厨埋,當(dāng)用戶修改了昵稱和頭像后需要刪除本地緩存,并自動調(diào)用fetchProfileForPersonBlock
5.自定義用戶行為回調(diào)
(1)點(diǎn)擊網(wǎng)址的回調(diào) YWOpenURLBlock
(2)點(diǎn)擊預(yù)覽大圖的回調(diào) YWUIPreviewImageMessageBlockV3
(3)點(diǎn)擊打開地理位置的回調(diào) YWUIPreviewLocationBlock
(4)點(diǎn)擊用戶頭像的回調(diào) YWOpenProfileBlock捐顷,一般用來進(jìn)入個人空間啥的
6.顯示通知設(shè)置
YWIMKit內(nèi)部處理通知的樣式在YWShowNotificationBlock里設(shè)置荡陷,可以用SVProgressHud設(shè)置
7.全局顏色和氣泡自定義
對于默認(rèn)YMUIKit的的顏色操作雨效,在CustomizedUIResources.bundle下的OpenIM-Theme.plist中,可以修改自己想要的顏色废赞,上圖的cell徽龟,昵稱是紅色的,就是由下圖中Tableview-CellTitle這個字段對應(yīng)的value#ff0000決定的蛹头。


自定義顏色.png

CustomizedUIResources.bundle下還有一個wxo_bubble_customize.plist以及許多圖片資源顿肺,這些就是用來設(shè)置氣泡外觀的,找到對應(yīng)的名稱渣蜗,修改圖片即可完成自定義

自定義氣泡聊天框

兩個邊緣結(jié)構(gòu)體的說明
cap_insets:圖片拉伸參數(shù)屠尊,對于形狀較復(fù)雜的圖片,我們的UI設(shè)計師給圖的時候要加尺寸耕拷,如下圖設(shè)計
edge_insets:內(nèi)容適應(yīng)背景的邊緣間距

cap_insets

edge_insets

3讼昆、 YWIMCore OpenIM核心數(shù)據(jù)層對象

  • YWIMCore是數(shù)據(jù)層的封裝
  • YWIMCore對象代表了使用OpenIM賬號的上下文信息,可以從該對象中獲得IM的各種服務(wù)骚烧。例如浸赫,您調(diào)用YWIMCore對象的登錄服務(wù)登錄成功后,可以調(diào)用- YWIMCore對象的會話服務(wù)獲取會話并發(fā)送消息赃绊。
    YWIMCore包含多個服務(wù)屬性既峡,每個服務(wù)屬性遵循一個服務(wù)協(xié)議,每個服務(wù)協(xié)議中定義個各自能夠完成的功能

下面羅列一些較為常用的服務(wù)碧查,其他服務(wù)使用不多
每個Service都有對應(yīng)的Def运敢,會定義一些宏,常量忠售,枚舉传惠,block等

協(xié)議 包括 內(nèi)容
IYWLoginService
登錄與長連接服務(wù)
(1)獲取當(dāng)前登錄用戶的信息,id稻扬,顯示名稱等
(2)設(shè)置登錄能力卦方,用戶名,密碼等泰佳。輸入不正確盼砍,則無法登錄
(3)預(yù)登陸
(4)登錄,登出
IYWConversationService
會話
(1)異步查看所有會話(包括群聊和單聊)
(2)異步刪除會話
(3)給某個會話添加收到消息的通知
(4)為自己的消息添加生命周期代理逝她,可以在消息發(fā)送前衬廷,改變消息內(nèi)容或者取消發(fā)送
(5)獲得某個會話的所有消息,單個消息(消息model是IYWMessage)
IYWTribeService
群組
(1)返回所有已加入群
(2)獲得指定群的信息
(3)創(chuàng)建群 YWTribeDescriptionParam 創(chuàng)建參數(shù)
(4)加入群
(5)退出群
(6)解散群
(7)邀請人加入
(8)踢出某人
(9)設(shè)置成員為管理員或普通成員
(10)修改群成員昵稱
(11)上述操作的一系列回調(diào)汽绢,和移除回調(diào)操作
(12)獲取成員列表
IYWContactService
聯(lián)系人
(1)黑名單
(2)好友的全部功能(增吗跋,刪,改,接收他人添加請求的回調(diào)處理)
(3)分組操作
IYWSettingService
設(shè)置
(1)設(shè)置是否推送
(2)設(shè)置是否接收消息(對單聊對象或群)
(3)開關(guān)@消息功能

4跌宛、IYWMessage

YWConversation 根據(jù)會話id先獲得一個會話對象YWConversation
用該對象的 asyncSendMessageBody:progress:completion 異步發(fā)送消息IYWMessage對象
當(dāng)你接收到消息時酗宋,總是可以從messageBody中獲取到對應(yīng)的數(shù)據(jù)。
當(dāng)你需要發(fā)送消息時疆拘,總是需要先構(gòu)造對應(yīng)的messageBody蜕猫,將數(shù)據(jù)放入body中。
messageBody的類型有
YWMessageBodyText
YWMessageBodyImage
YWMessageBodyCustomize哎迄,還有語音回右,地理位置消息等


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漱挚,隨后出現(xiàn)的幾起案子翔烁,更是在濱河造成了極大的恐慌,老刑警劉巖旨涝,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬屹,死亡現(xiàn)場離奇詭異,居然都是意外死亡白华,警方通過查閱死者的電腦和手機(jī)慨默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弧腥,“玉大人厦取,你說我怎么就攤上這事」芴拢” “怎么了蒜胖?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抛蚤。 經(jīng)常有香客問我,道長寻狂,這世上最難降的妖魔是什么岁经? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蛇券,結(jié)果婚禮上缀壤,老公的妹妹穿的比我還像新娘。我一直安慰自己纠亚,他們只是感情好塘慕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蒂胞,像睡著了一般图呢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天蛤织,我揣著相機(jī)與錄音赴叹,去河邊找鬼。 笑死指蚜,一個胖子當(dāng)著我的面吹牛乞巧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摊鸡,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼绽媒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了免猾?” 一聲冷哼從身側(cè)響起是辕,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掸刊,沒想到半個月后免糕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忧侧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年石窑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚓炬。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡松逊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肯夏,到底是詐尸還是另有隱情经宏,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布驯击,位于F島的核電站烁兰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏徊都。R本人自食惡果不足惜沪斟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暇矫。 院中可真熱鬧主之,春花似錦、人聲如沸李根。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽房轿。三九已至粤攒,卻和暖如春所森,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琼讽。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工必峰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钻蹬。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓吼蚁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親问欠。 傳聞我的和親對象是個殘疾皇子肝匆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,700評論 0 15
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件顺献、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評論 4 62
  • 2017.02.22 可以練習(xí)旗国,每當(dāng)這個時候,腦袋就犯困注整,我這腦袋真是神奇呀能曾,一說讓你做事情,你就犯困肿轨,你可不要太...
    Carden閱讀 1,331評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,756評論 25 707
  • 慌 晨起席涼若玉床寿冕, 被暖身冷愈心慌。 夏末未至秋尚遠(yuǎn)椒袍, 天云詭譎翻彷徨驼唱。
    陳言著詩隨云飛閱讀 233評論 0 1