在LeanCloud上使用ChatKit组件搭建即时通讯

由于最近项目的需求,正好要做一款涉及聊天的APP,所以优先考虑到了ChatKit这款强大的开源组件,同时它提供完全自由的授权协议,支持二次开发。但是通过看官方的文档,发现它在其中集成了很多的胶水函数,在我真正实现起来还是有很多不容易的地方。
所以在这里我把整个流程框架和一些基础点列出来,也算对项目过程的一个小总结。

可以在这里获取组件Demo:git clone –depth=1 https://github.com/leancloud/ChatKit-OC

页面效果这里写图片描述

大概步骤
1.通过CocoaPods导入 ‘ChatKit’ (导入过程就不再涉及了,很简单)
2.胶水函数快速集成:
ChatKit 提供了一个快速集成的演示类 LCChatKitExample,其中集成了打量的胶水函数,使用 LCChatKitExample 提供的函数即可完成从程序启动到登录再到登出的完整流程。
<1>在 AppDeledate中调用下面这几个基础的入口胶水函数,可完成初步的集成:/*!
* 入口胶水函数:初始化入口函数
*
* 程序完成启动,在 appdelegate 中的 -[AppDelegate didFinishLaunchingWithOptions:] 一开始的地方调用.
*/
+ (void)invokeThisMethodInDidFinishLaunching;

/*!
* Invoke this method in -[AppDelegate appDelegate:didRegisterForRemoteNotificationsWithDeviceToken:].
*/
+ (void)invokeThisMethodInDidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

/*!
* invoke This Method In -[AppDelegate application:didReceiveRemoteNotification:]
*/
+ (void)invokeThisMethodInApplication:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo ;

/*!
* 入口胶水函数:登入入口函数
*
* 用户即将退出登录时调用
*/
+ (void)invokeThisMethodAfterLoginSuccessWithClientId:(NSString *)clientId success:(LCCKVoidBlock)success failed:(LCCKErrorBlock)failed;

/*!
* 入口胶水函数:登出入口函数
*
* 用户即将退出登录时调用
*/
+ (void)invokeThisMethodBeforeLogoutSuccess:(LCCKVoidBlock)success failed:(LCCKErrorBlock)failed;
+ (void)invokeThisMethodInApplicationWillResignActive:(UIApplication *)application;
+ (void)invokeThisMethodInApplicationWillTerminate:(UIApplication *)application;

3.最近联系人界面的初始化:LCCKConversationListViewController *firstViewController = [[LCCKConversationListViewController alloc] init];
4.由最近联系人进入聊天界面(示例代码如下):
[[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];
}];

5.聊天界面初始化:
// 用于单聊,默认会创建一个只包含两个成员的 unique 对话(如果已经存在则直接进入,不会重复创建)
LCCKConversationViewController *conversationViewController = [[LCCKConversationViewController alloc] initWithPeerId:peerId];
6对话详情页面简单处理:
typedef void(^LCCKBarButtonItemActionBlock)(void);

typedef NS_ENUM(NSInteger, LCCKBarButtonItemStyle) {
LCCKBarButtonItemStyleSetting = 0,
LCCKBarButtonItemStyleMore,
LCCKBarButtonItemStyleAdd,
LCCKBarButtonItemStyleAddFriends,
LCCKBarButtonItemStyleShare,
LCCKBarButtonItemStyleSingleProfile,
LCCKBarButtonItemStyleGroupProfile,
};

  • (void)configureBarButtonItemStyle:(LCCKBarButtonItemStyle)style action:(LCCKBarButtonItemActionBlock)action;

总结:整个流程虽然看起来很简单,但是当你真正去入手时就会发现并非如此;当然,以上的环节也难免有错误和不合理之处,希望大家多多指教。

猜你喜欢

转载自blog.csdn.net/kenn_lee/article/details/52690537
今日推荐