ChatKit 是一個免費且開源的 UI 聊天組件,自帶雲服務器,自帶推送,支持消息漫游,消息永久存儲。底層聊天服務基於LeanCloud(原名 AVOS
) 的 IM 實時通信服務「LeanMessage」而開發,采用 Protobuf 協議進行消息傳輸。ChatKit 可以幫助開發者快速集成 IM 服務,輕松實現聊天功能,提供完全自由的授權協議,支持二次開發。其最大特點是把聊天常用的一些功能配合 UI 一起提供給開發者。
運行效果:
示例代碼:
由最近聯系人進入聊天界面
按照上面的步驟,我們可以非常方便地打開最近聯系人頁面。但是我們會發現,點擊其中的某個聯系人/聊天群組,我們並不能直接進入聊天界面。要做到這一點,我們需要給 LCChatKit 設置上事件響應函數,示例代碼如下:
1
2
3
4
5
|
[[LCChatKit sharedInstance] setDidSelectConversationsListCellBlock:^(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller) {
NSLog(@
"conversation selected"
);
LCCKConversationViewController *conversationVC = [[LCCKConversationViewController alloc] initWithConversationId:conversation.conversationId];
[controller.navigationController pushViewController:conversationVC animated:YES];
}];
|
對於聯系人列表頁面,我們在 LCChatKit 可以響應如下四種操作悅德財富https://www.yuedecaifu.com:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/*!
* 選中某個對話后的回調 (比較常見的需求)
* @param conversation 被選中的對話
*/
typedef
void
(^LCCKConversationsListDidSelectItemBlock)(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller);
/*!
* 設置選中某個對話后的回調
*/
- (
void
)setDidSelectConversationsListCellBlock:(LCCKConversationsListDidSelectItemBlock)didSelectItemBlock;
/*!
* 刪除某個對話后的回調 (一般不需要做處理)
* @param conversation 被選中的對話
*/
typedef
void
(^LCCKConversationsListDidDeleteItemBlock)(NSIndexPath *indexPath, AVIMConversation *conversation, LCCKConversationListViewController *controller);
/*!
* 設置刪除某個對話后的回調
*/
- (
void
)setDidDeleteConversationsListCellBlock:(LCCKConversationsListDidDeleteItemBlock)didDeleteItemBlock;
/*!
* 對話左滑菜單設置block (最近聯系人頁面有復雜的手勢操作時,可以通過這里擴展實現)
* @return 需要顯示的菜單數組
* @param conversation, 對話
* @param editActions, 默認的菜單數組,成員為 UITableViewRowAction 類型
*/
typedef
NSArray *(^LCCKConversationEditActionsBlock)(NSIndexPath *indexPath, NSArray<UITableViewRowAction *> *editActions, AVIMConversation *conversation, LCCKConversationListViewController *controller);
/*!
* 可以通過這個block設置對話列表中每個對話的左滑菜單,這個是同步調用的,需要盡快返回,否則會卡住UI
*/
- (
void
)setConversationEditActionBlock:(LCCKConversationEditActionsBlock)conversationEditActionBlock;
|