LeanCloud實時通信模塊iOS端快速接入指南(一)

應(yīng)該是最后一次更新

LeanCloud已針對UI推出了ChatKit庫,原來的LeanChatLib已不再更新
LeanCloud ChatKit文檔地址
建議各位同學(xué)移步官網(wǎng)使用最新的UI框架

更新

更新了最新版的LeanCloud的SDK
靜態(tài)庫的體積確實小了很多纽窟,但是有一些LeanCloud改了一小部分方法的名稱
如果按照我的攻略發(fā)現(xiàn)代碼有問題的,請把所有的Conv改為Conversation不管這個Conv是在開頭還是結(jié)尾還是方法名中間

比如老版的是

  [[CDChatManager manager] fetchConvWithOtherId:_textField.text callback:^(AVIMConversation *conversation, NSError *error) {
    }];

現(xiàn)在就是

[[CDChatManager manager]fetchConversationWithOtherId:@"78" callback:^(AVIMConversation *conversation, NSError *error) {
    }];

其他方法同上膛锭,如有其它發(fā)現(xiàn)我都會寫在這里

更新

最新版的LeanCloud已經(jīng)解決了靜態(tài)庫基礎(chǔ)模塊SDK過大問題辰妙,沒有更新的可以及時更新

LeanCloud 3.2.4.1版本

前言

現(xiàn)在市面上的APP康嘉,為了通過社交增加用戶粘性魂贬,實時通訊功能幾乎成了APP標(biāo)配巩割。對于絕大多數(shù)開發(fā)者來說,自己從零開始難度太大付燥,大家更多地是去選擇第三方IM服務(wù)商宣谈。
國內(nèi)用得比較多的IM服務(wù)商也就那么幾個。X云机蔗,X信見得最多蒲祈,除了這個之外很多人還提到了leanCloud。leanCloud其實也是一個很好地選擇萝嘁,但是比較坑爹的是網(wǎng)上關(guān)于他的攻略真的少之又少梆掸,官方文檔業(yè)務(wù)邏輯講的非常清楚,但是真做起來還是無從下手牙言。所以我自己寫一篇接入指南酸钦,希望能拋磚引玉,并且?guī)椭胧褂胠eanCloud做IOS即時通訊的同學(xué)咱枉。


正文

注冊leanCloud

以上幾部是所有第三方SDK必要的步驟卑硫,在這里就不在贅述

接入LeanCloud

手動接入

強烈建議使用cocoapods自動導(dǎo)入,方便快捷蚕断。還不會cocoapods的同學(xué)你真的已經(jīng)Out了欢伏。這里提供一篇唐巧的技術(shù)博客供參考。[用CocoaPods做iOS程序的依賴管理 -- 唐巧]

如果你還是選擇手動導(dǎo)入的話亿乳,請移步官方文檔[leanCloud的導(dǎo)入]

自動接入

首先在你的podfile中加入下面幾句話

pod 'AVOSCloud' pod 'AVOSCloudIM'

如果使用動態(tài)庫

use_frameworks! pod 'AVOSCloudDynamic' pod 'AVOSCloudIMDynamic'

然后在項目根目錄執(zhí)行 pod install 命令硝拧,就能將 LeanCloud SDK for iOS 集成到你的項目中。

  • 注意:使用動態(tài)庫的條件是你的項目只支持iOS 8 以上版本葛假。而且千萬不要忘了那句use_frameworks!

  • 這里順便提一句障陶,如果使用靜態(tài)庫,你可能會發(fā)現(xiàn)SDK體積非常大聊训,大概150MB左右抱究,但是不必擔(dān)心,在你打包的時候Xcode會自動strip掉不必要的代碼带斑,因此實際安裝包體積不會變的很大鼓寺。而且這里建議選取靜態(tài)庫,原因第二步會加以說明勋磕。

接入LeanChatLib

看到這里肯定有同學(xué)會問侄刽,臥槽?這是什么鬼朋凉?
在leanCloud的官方文檔上有這么一段

Paste_Image.png

這兩個Demo是leanCloud開源在github上的州丹,大家有時間可以下載下來研究,常見的社交功能這里都實現(xiàn)了杂彭。

這里再多嘴一句墓毒,如果只是用leanCloud做社交,那么看LeanMssage對你比較有用亲怠。因為LeanChat從前臺到后臺都是完全基于LeanCloud開發(fā)的所计,包括了LeanCloud的即時通訊,數(shù)據(jù)存儲团秽,關(guān)系管理和權(quán)限管理和關(guān)系管理等一系列模塊主胧。除非你打算完全依靠LeanCloud做一個APP出來(其實完全可以)叭首,否則借鑒意義不是很大。

  • LeanChat已在App Store上線踪栋,搜索LeanChat就可以下載

好了焙格,說了這么多廢話,還沒回答問題夷都。LeanChatLib其實就是LeanCloud自己寫的一套聊天用的UI眷唉,而LeanChat 和 LeanMssage用的都是它。使用這套東西可以給我們省下很多力氣囤官。

這里我們依然使用cocoapods導(dǎo)入
在podfile中添加

pod 'LeanChatLib'

然后在項目根目錄執(zhí)行 pod install 命令冬阳,就能將 LeanChatLib 集成到你的項目中。

  • 在上一步使用cocoapods導(dǎo)入LeanCloud的時候党饮,如果你使用了靜態(tài)庫肝陪,導(dǎo)入完LeanChatLib后再編譯會報錯,錯誤原因應(yīng)該就是因為LeanChatLib不支持動態(tài)庫刑顺,所以在如果你使用LeanChatLib來搭建UI见坑,那么SDK最好選擇靜態(tài)庫

實現(xiàn)簡單的聊天界面

setp 1

使用Xcode創(chuàng)建一個新項目,取個你喜歡的名字捏检。

Paste_Image.png
step 2

使用cocoapods導(dǎo)入相應(yīng)的三方庫
Podfile的內(nèi)容以及導(dǎo)入完成后的目錄如下


Paste_Image.png
step3

項目中注冊LeanCloud
在AppDelegate中導(dǎo)入頭文件
#import <AVOSCloud/AVOSCloud.h>
#import <AVOSCloudIM/AVOSCloudIM.h>
添加如下代碼
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. .... [AVOSCloud setApplicationId:@"你的App Id" clientKey:@"你的App Key"]; .... return YES; }
運行項目荞驴,稍等幾秒,如果出現(xiàn)下列信息贯城,說明設(shè)置成功

Paste_Image.png
step 4

創(chuàng)建一個ViewControler繼承于CDChatRoomVC

Paste_Image.png

在ViewController.m中引入頭文件
#import <CDChatManager.h>
#import "ChatViewController.h"

在main.storyboard中為它添加一個按鈕并添加點擊事件

Paste_Image.png

事件中這么寫
[[CDChatManager manager]openWithClientId:@"Tom" callback:^(BOOL succeeded, NSError *error) { [[CDChatManager manager]fetchConvWithOtherId:@"Jerry" callback:^(AVIMConversation *conversation, NSError *error) { ChatViewController * chat = [[ChatViewController alloc]initWithConv:conversation]; [self presentViewController:chat animated:YES completion:nil] ;}] ;}];
運行項目熊楼,點擊開始聊天。就能打開Tom和Jerry的會話了能犯。

Paste_Image.png

這里解釋一下原理
[CDChatManager manager] openWithClientId:@"Tom" callback:^(BOOL succeeded, NSError *error) {}];
*獲取聊天管理類的單例并根據(jù)client id打開一個聊天客戶端

這個client id是隨意指定的鲫骗,這里我們用的是Tom,你也可以用jack ,rose或者數(shù)字等等踩晶。打開客戶端你可以理解為登陸了Tom的QQ执泰。

[[CDChatManager manager] fetchConvWithOtherId:@"Jerry" callback:^(AVIMConversation *conversation, NSError *error) {}];
*根據(jù)目標(biāo)id獲取一個聊天會話。

使用這個方法的前提是你已經(jīng)有了一個已知id渡蜻,換句話說就是你已經(jīng)登陸了一個client术吝。LeanCloud的聊天原理就是根據(jù)id創(chuàng)建會話,你換個id就回進入新的會話茸苇,你換回來就回回到原來的會話排苍,聊天記錄也會保留。而且最贊的是這一系列方法都是帶了回調(diào)Block的学密,使用起來十分方便淘衙,且使用形式非常多。

ChatViewController * chat = [[ChatViewController alloc]initWithConv:conversation]; [self presentViewController:chat animated:YES completion:nil]
*創(chuàng)建一個聊天用的視圖控制器并跳轉(zhuǎn)過去

我們剛才已經(jīng)讓ChatViewController繼承了CDChatRoomVC腻暮,所以它也有了帶有會話參數(shù)的構(gòu)造方法彤守。
我們將這兩句寫在獲取會話的回調(diào)方法里毯侦,將回調(diào)方法中的conversation參數(shù)穿進去,然后跳轉(zhuǎn)到這個視圖控制器具垫。這樣就完成了一次進入聊天的操作侈离。
這里解釋一下conversation,他是AVIMConversation類的一個對象(這TM是廢話)AVIMConversation是LeanCloud的實時通訊的核心類之一做修,代表一個會話霍狰,里面包含了會話的標(biāo)題抡草,成員列表饰及,未讀消息數(shù)等很多實用的屬性。之后我們會經(jīng)常用到它康震。


結(jié)束語

到此為止燎含,我們已經(jīng)實現(xiàn)了最簡單的聊天。下一節(jié)腿短,我們來實現(xiàn)真正的兩個人之間的聊天屏箍,以及會話和用戶屬性的自定義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橘忱,一起剝皮案震驚了整個濱河市赴魁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钝诚,老刑警劉巖颖御,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凝颇,居然都是意外死亡潘拱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門拧略,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦岂,“玉大人,你說我怎么就攤上這事垫蛆∏葑睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵袱饭,是天一觀的道長弛随。 經(jīng)常有香客問我,道長宁赤,這世上最難降的妖魔是什么舀透? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮决左,結(jié)果婚禮上愕够,老公的妹妹穿的比我還像新娘走贪。我一直安慰自己,他們只是感情好惑芭,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布坠狡。 她就那樣靜靜地躺著,像睡著了一般遂跟。 火紅的嫁衣襯著肌膚如雪逃沿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天幻锁,我揣著相機與錄音凯亮,去河邊找鬼。 笑死哄尔,一個胖子當(dāng)著我的面吹牛假消,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岭接,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼富拗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸣戴?” 一聲冷哼從身側(cè)響起啃沪,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窄锅,沒想到半個月后创千,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡酬滤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年签餐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯串。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丽猬,死狀恐怖德谅,靈堂內(nèi)的尸體忽然破棺而出殷绍,到底是詐尸還是另有隱情梗摇,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布几缭,位于F島的核電站河泳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏年栓。R本人自食惡果不足惜拆挥,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望某抓。 院中可真熱鬧纸兔,春花似錦惰瓜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洲拇,卻和暖如春奈揍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赋续。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工男翰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚕捉。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓奏篙,卻偏偏與公主長得像柴淘,于是被迫代替她去往敵國和親迫淹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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