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)入個人空間,則需要定義這個)
從上面的展示可以看出驮吱,自定義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決定的蛹头。
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)背景的邊緣間距
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哎迄,還有語音回右,地理位置消息等