集成融云的一些使用心得
来源:互联网 发布:Sony编程 编辑:程序博客网 时间:2024/05/17 04:01
最近由于项目需要集成融云,就下载了融云的demo,看着开发文档,开始了我的爬坑之旅......
融云有自带界面的IMKit和不带界面的IMLib,这里我集成的是IMKit,需要用到IMLib的小伙伴就自己折腾吧0.0
开始首先就得照着文档注册账号,导入编译所需要的文件吧。
新建一个类继承于RCConversationViewController
@interface ChatViewController : RCConversationViewController
从其他页面跳转到聊天界面的代码是ChatViewController *chat = [[ChatViewControlleralloc] initWithConversationType:ConversationType_PRIVATEtargetId:@"targetIdYouWillChatIn"];
chat.title = @"会话标题";
[self.navigationControllerpushViewController:chat animated:YES];
聊天界面下方的输入工具栏,自带8种样式
/*!
输入工具栏的显示布局
*/
typedef NS_ENUM(NSInteger, RCChatSessionInputBarControlStyle) {
/*!
切换-输入框-扩展
*/
RC_CHAT_INPUT_BAR_STYLE_SWITCH_CONTAINER_EXTENTION = 0,
/*!
扩展-输入框-切换
*/
RC_CHAT_INPUT_BAR_STYLE_EXTENTION_CONTAINER_SWITCH = 1,
/*!
输入框-切换-扩展
*/
RC_CHAT_INPUT_BAR_STYLE_CONTAINER_SWITCH_EXTENTION = 2,
/*!
输入框-扩展-切换
*/
RC_CHAT_INPUT_BAR_STYLE_CONTAINER_EXTENTION_SWITCH = 3,
/*!
切换-输入框
*/
RC_CHAT_INPUT_BAR_STYLE_SWITCH_CONTAINER = 4,
/*!
输入框-切换
*/
RC_CHAT_INPUT_BAR_STYLE_CONTAINER_SWITCH = 5,
/*!
扩展-输入框
*/
RC_CHAT_INPUT_BAR_STYLE_EXTENTION_CONTAINER = 6,
/*!
输入框-扩展
*/
RC_CHAT_INPUT_BAR_STYLE_CONTAINER_EXTENTION = 7,
/*!
输入框
*/
RC_CHAT_INPUT_BAR_STYLE_CONTAINER = 8,
};
self.chatSessionInputBarControl.hidden =YES;可以隐藏原来的输入工具栏,然后新建View,自定义所需要的控件(PS:输入框一般是UITextView,自定义的时候不要写成UITextFiled);
当控件自定义完成后,该是发送消息,发送图片什么的了,融云也提供了接口来实现:
/*!
发送消息(除图片消息外的所有消息)
@param messageContent 消息的内容
@param pushContent 接收方离线时需要显示的远程推送内容
@discussion 当接收方离线并允许远程推送时,会收到远程推送。
远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent置为nil,会使用默认的推送格式进行远程推送。
自定义类型的消息,需要您自己设置pushContent来定义推送内容,否则将不会进行远程推送。
如果您需要设置发送的pushData,可以使用RCIM的发送消息接口。
*/
- (void)sendMessage:(RCMessageContent *)messageContent
pushContent:(NSString *)pushContent;
/*!
发送图片消息
@param imageMessage 消息的内容
@param pushContent 接收方离线时需要显示的远程推送内容
@discussion 当接收方离线并允许远程推送时,会收到远程推送。
远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。
SDK内置的消息类型,如果您将pushContent置为nil,会使用默认的推送格式进行远程推送。
自定义类型的消息,需要您自己设置pushContent来定义推送内容,否则将不会进行远程推送。
如果您需要设置发送的pushData,可以使用RCIM的发送图片消息接口。
*/
- (void)sendImageMessage:(RCImageMessage *)imageMessage
pushContent:(NSString *)pushContent;
content.content = @"发送的消息";
[selfsendMessage:content pushContent:nil];
例子:发送图片-> RCImageMessage *image = [RCImageMessagemessageWithImage:img]; (img是你需要发送的图片)
[selfsendImageMessage:image pushContent:nil];
#pragma mark - 发送消息完成的回调
- (void)didSendMessage:(NSInteger)stauts
content:(RCMessageContent *)messageCotent {
if (stauts == 0) {
NSLog(@"发送成功");
}
} else {
NSLog(@"发送失败");
}
}
还有一个很重要的方法,就是SDK通过此方法获取用户信息并显示,请在completion中返回该用户ID对应的用户信息。
在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。
#pragma mark - SDK通过此方法获取用户信息并显示
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion
{
if ([@"自己的ID" isEqualToString:userId]) {
RCUserInfo *user = [[RCUserInfoalloc]init];
user.userId = @"自己的ID";
user.name = @"自己的昵称";
user.portraitUri = @"自己的头像";
return completion(user);
} else {
RCUserInfo *user = [[RCUserInfoalloc]init];
user.userId = @"对方的ID"
user.name = @"对方的昵称";
user.portraitUri =@"对方的头像";
return completion(user);
}
return completion(nil);
}
好了,就总结这么多了,如有不足,欢迎补充