集成融云的一些使用心得

来源:互联网 发布: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];


虽然IMKit自带UI界面,但是界面也是支持自定义的

聊天界面下方的输入工具栏,自带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;


例子:发送消息-> RCTextMessage *content = [[RCTextMessagealloc] init];

      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);

}

好了,就总结这么多了,如有不足,欢迎补充

0 0