美文网首页融云IM
融云即时聊天发送自定义消息(视频 名片 分享)

融云即时聊天发送自定义消息(视频 名片 分享)

作者: 53e002d096fb | 来源:发表于2017-06-12 13:34 被阅读1599次

    1.配置融云,参考  http://www.rongcloud.cn/docs/ios.html。

    2.首先说一下如何发送个人名片。

    a.在融云官方的demo里,有一个库RongContactCard.framework,把这个库拖入到自己的工程中,

    b.初始化名片消息:

    RCUserInfo*userInfo = [[RCUserInfoalloc]initWithUserId:[NSStringstringWithFormat:@"%@",model.Id] name:model.nickName portrait:model.avatarUrl];

    RCContactCardMessage*content = [RCContactCardMessage messageWithUserInfo:userInfo];

    c.将得到的名片消息通过下面这个方法发送

    1.1发送消息

    如果发送的名片还有留言,则还需要通过该方法发送一个文本消息,即在初始化一个文本消息,也是通过上面这个方法发送消息。

    2.发送分享的消息

    a.自己自定义一个消息类(消息类型名要重新赋值),继承于RCMessageContent,在入口类appdelagate里注册该消息  [[RCIMsharedRCIM] registerMessageType:[KJDynamicContent class]];

    b.自定义一个cell,继承RCMessageCell,在cell的.m文件中重写+ (CGSize)sizeForMessageModel:(RCMessageModel*)model

    withCollectionViewWidth:(CGFloat)collectionViewWidth

    referenceExtraHeight:(CGFloat)extraHeight 这个方法(该方法是获取cell在表中的高度)

    在你的聊天页面注册cell,[sel fregisterClass:[KJDynamicCell class] forMessageClass:[KJDynamicContent class]];

    c.发送分享消息时,初始化你自定义的消息,发送消息的方法参考发送个人名片消息的发送方法

    3.发送视频消息

    a.和发送分享的消息一样,先自定义一个消息类,和一个cell,

    b.发送视频消息有两种方法,参考http://support.rongcloud.cn/kb/NTY1。我使用的是第二种方法,通过

    KJVideoMessage*message = [KJVideoMessagemessageWithMThumUri:[UIImageToolsstringToBase64Str:_thumbImage]Video:URL.absoluteStringisLong:isLong];(KJVideoMessage 是我自定义的cell,大家可以自己随意命名)

    [self sendMediaMessage:message pushContent:nil appUpload:YES];(发送消息的方法),

    /*!

    上传媒体信息到App指定的服务器的回调

    @param message媒体消息(图片消息或文件消息)的实体

    @param uploadListener SDK图片上传进度监听

    @discussion如果您通过sendMediaMessage:pushContent:appUpload:接口发送媒体消息,则必须实现此回调。

    您需要在此回调中通过uploadListener将上传媒体信息的进度和结果通知SDK,SDK会根据这些信息,自动更新UI。

    */

    - (void)uploadMedia:(RCMessage*)message uploadListener:(RCUploadMediaStatusListener*)uploadListener,

    在这个方法中上传你需要传的视频到你的服务器,让后将你上传的进度通过RCUploadMediaStatusListener中的uploadListener.updateBlock将进度传进去刷新UI。(注意,在这地方上传的进度为大于1的整型,1 - 100)。

    我们需要在自定义的cell中接收到上传的进度然后显示在UI上,这里有两种方法可以获取进度,

    I.重写/*!

    消息发送状态更新的监听回调

    @param notification消息发送状态更新的Notification

    */

    - (void)messageCellUpdateSendingStatusEvent:(NSNotification*)notification {

    [supermessageCellUpdateSendingStatusEvent:notification];

    RCMessageCellNotificationModel*model = notification.object;

    NSLog(@"model.progress ======%ld",model.progress);

    NSLog(@"model.messageId ======%ld",model.messageId);

    NSLog(@"model.actionName ======%@",model.actionName);

    }

    II.通过融云的一个发送消息时一个私有的通知RCKitSendingMessageNotification获取,具体代码:

    在cell的初始化方法里添加一个观察者[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(didReceiveMessageNotification:)name:@"RCKitSendingMessageNotification"object:nil];

    - (void)didReceiveMessageNotification:(NSNotification*)notification {

    NSLog(@"%@",notification);

    NSLog(@"progress ==== %f",[notification.userInfo[@"progress"] floatValue]);

    }

    c.发送成功之后通过uploadListener.successBlock将上传成功的视频地址回调出去,同时将你自定义消息里的视频地址重新赋值,这时融云会自动将消息发送出去。

    至此,融云的自定义消息(个人名片 视频消息 分享消息)已经全部写完,如有什么不懂得可私信我,或者邮箱联系我583702176@qq.com。如有什么不对的地方,或者还有什么需要补充的欢迎大家指出,大家共同进步。

    相关文章

      网友评论

        本文标题:融云即时聊天发送自定义消息(视频 名片 分享)

        本文链接:https://www.haomeiwen.com/subject/czbflttx.html