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

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.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将上传成功的视频地址回调出去,同时将你自定义消息里的视频地址重新赋值,这时融云会自动将消息发送出去。

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

你可能感兴趣的:(融云即时聊天发送自定义消息(视频 名片 分享))