應(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過大問題辰妙,沒有更新的可以及時更新
前言
現(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
- 登陸leanCloud官網(wǎng) [leanCloud官網(wǎng)]
- 注冊賬號
- 創(chuàng)建App
以上幾部是所有第三方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的官方文檔上有這么一段
這兩個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)建一個新項目,取個你喜歡的名字捏检。
step 2
使用cocoapods導(dǎo)入相應(yīng)的三方庫
Podfile的內(nèi)容以及導(dǎo)入完成后的目錄如下
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è)置成功
step 4
創(chuàng)建一個ViewControler繼承于CDChatRoomVC
在ViewController.m中引入頭文件
#import <CDChatManager.h>
#import "ChatViewController.h"
在main.storyboard中為它添加一個按鈕并添加點擊事件
事件中這么寫
[[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的會話了能犯。
這里解釋一下原理
[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)真正的兩個人之間的聊天屏箍,以及會話和用戶屬性的自定義。