iOS 端的 UI 聊天組件ChatKit及代碼實現


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM