跳转至

发送消息

注意

以下三个接口,1 秒钟最多可以调用 5 次,也就是 1 秒钟最多只允许发送 5 条消息,否则会导致后面的消息发送失败。

普通消息

提示

  1. 远程推送中包含两部分内容,一是 pushContent,用于显示;二是 pushData,用于携带不显示的数据。
  2. 自定义类型的消息,需要开发者自己设置 pushContentpushData 来定义推送内容,否则将不会进行远程推送。
  3. 如果开发者使用此方法发送图片消息,需要开发者自己实现图片的上传,构建一个 RCImageMessage对象,并将 RCImageMessage 中的 imageUrl 字段设置为上传成功的URL地址,然后使用此方法发送。
  4. 如果开发者使用此方法发送文件消息,需要开发者自己实现文件的上传,构建一个 RCFileMessage 对象,并将 RCFileMessage 中的 fileUrl 字段设置为上传成功的 URL 地址,然后使用此方法发送。
  5. 如果开发者使用 IMKit,请使用 RCIM 中的同名方法发送消息,否则不会自动更新 UI。
参数 类型 说明
conversationType RCConversationType 会话类型,不支持聊天室会话。
targetId NSString 目标会话 Id
content RCMessageContent 消息的内容
pushContent NSString 接收方离线时需要显示的远程推送内容
pushData NSString 接收方离线时需要在远程推送中携带的非显示数据
successBlock void 消息发送成功的回调 [messageId: 消息的 Id]
errorBlock void 消息发送失败的回调 [nErrorCode: 发送失败的错误码,messageId: 消息的 Id]
返回值 RCMessage 发送的消息实体
- (RCMessage *)sendMessage:(RCConversationType)conversationType
                  targetId:(NSString *)targetId
                   content:(RCMessageContent *)content
               pushContent:(NSString *)pushContent
                  pushData:(NSString *)pushData
                   success:(void (^)(long messageId))successBlock
                     error:(void (^)(RCErrorCode nErrorCode, long messageId))errorBlock;

文本

参数 类型 说明
content NSString 文本消息内容
txtMessage RCTextMessage 文本消息对象
ConversationType_PRIVATE RCConversationType 单聊会话
    RCTextMessage *txtMessage = [RCTextMessage messageWithContent:content];
    [[RCIMClient sharedRCIMClient]
                sendMessage:ConversationType_PRIVATE
                targetId:@"目标会话 Id"
                content:txtMessage
                pushContent:@"远程推送显示的内容"
                pushData:@"远程推送的附加信息"
                success:^(long messageId) {

                }
                error:^(RCErrorCode nErrorCode, long messageId) {

    }];

位置

提示

发送方法参考文本消息发送方法。

参数 类型 说明
image UIImage 地理位置的缩略图
location CLLocationCoordinate2D 地理位置的二维坐标
locationName NSString 地理位置的名称
locationMessage RCLocationMessage 位置消息对象
    RCLocationMessage *locationMessage = [RCLocationMessage messageWithLocationImage:image location:location locationName:locationName];

语音

提示

发送方法参考文本消息发送方法。

参数 类型 说明
audioData NSData wav 格式的音频数据。
duration long 语音消息的时长。
voiceMessage RCVoiceMessage 语音消息对象。
    RCVoiceMessage *voiceMessage = [RCVoiceMessage messageWithAudio:audioData duration:duration];

注意

如果开发者不是使用IMKit中的录音功能,则在初始化语音消息的时候,需要确保以下几点。 1. audioData 必须是单声道的wav格式音频数据。 2. audioData 的采样率必须是8000Hz,采样位数(精度)必须为16位。 3. 具体录制参数代码可以参考 RCVoiceMessage.h 中的注释。

图文

提示

发送方法参考文本消息发送方法。

参数 类型 说明
title NSString 图文消息的标题
digest NSString 图文消息的内容摘要
imageURL NSString 是图文消息的图片 URL。
url NSString 图文消息中包含的需要跳转到的 URL
extra NSString 图文消息的扩展信息
richMessage RCRichContentMessage 图文消息对象
    RCRichContentMessage *richMessage = [RCRichContentMessage messageWithTitle:title digest:digest imageURL:imageurl url:url extra:nil];

提示

媒体数据会上传到融云默认的图片服务器。

参数 类型 说明
conversationType RCConversationType 会话类型,不支持聊天室会话。
targetId NSString 目标会话 Id
content RCMessageContent 消息的内容
pushContent NSString 接收方离线时需要显示的远程推送内容
pushData NSString 接收方离线时需要在远程推送中携带的非显示数据
progressBlock void 消息发送进度更新的回调 [progress: 当前的发送进度, 0 <= progress <= 100, messageId: 消息的Id]
successBlock void 消息发送成功的回调 [messageId: 消息的 Id]
errorBlock void 消息发送失败的回调 [nErrorCode: 发送失败的错误码,messageId: 消息的 Id]
cancelBlock void 用户取消了消息发送的回调 [messageId: 消息的 Id]
返回值 RCMessage 发送的消息实体
- (RCMessage *)sendMediaMessage:(RCConversationType)conversationType
                       targetId:(NSString *)targetId
                        content:(RCMessageContent *)content
                    pushContent:(NSString *)pushContent
                       pushData:(NSString *)pushData
                       progress:(void (^)(int progress, long messageId))progressBlock
                        success:(void (^)(long messageId))successBlock
                          error:(void (^)(RCErrorCode errorCode, long messageId))errorBlock
                         cancel:(void (^)(long messageId))cancelBlock;

图片

提示

  1. 会话类型以单聊为例。
  2. 可以使用 UIImage 对象来构造图片消息。
  3. 缩略图尺寸为:240 x 240 像素,以宽度和高度中较长的边不超过 240 像素等比压缩。
  4. 大图尺寸为:960 x 960 像素,以宽度和高度中较长的边不超过 960 像素等比压缩。
  5. 发送媒体消息会先上传媒体消息数据,上传成功后再发送消息。
  6. 可以将媒体数据上传到指定服务器
参数 类型 说明
imageUrl NSString 图片的本地路径
imgMessage RCImageMessage 图片消息对象
ConversationType_PRIVATE RCConversationType 单聊会话
    RCImageMessage *imgMessage = [RCImageMessage messageWithImageURI:imageUrl];
    [[RCIMClient sharedRCIMClient]
                sendMediaMessage:ConversationType_PRIVATE
                targetId:@"会话Id"
                content:imgMessage
                pushContent:@"远程推送显示的内容"
                pushData:@"远程推送的附加信息"
                progress:^(int progress, long messageId) {

                }
                success:^(long messageId) {

                }
                error:^(RCErrorCode errorCode, long messageId) {

                }
                cancel:^(long messageId) {

     }];

文件

提示

发送方法参考图片消息发送方法。

参数 类型 说明
filePath NSString 文件的本地路径。
fileMessage RCImageMessage 文件消息对象。
    RCFileMessage *fileMessage = [RCFileMessage messageWithFile:filePath];

定向消息

注意

此方法用于在群组和讨论组中发送消息给其中的部分用户,其它用户不会收到这条消息。

参数 类型 说明
conversationType RCConversationType 会话类型,不支持聊天室会话。
targetId NSString 目标会话 Id
userIdList NSArray 发送给的用户 Id 列表
content RCMessageContent 消息的内容
pushContent NSString 接收方离线时需要显示的远程推送内容
pushData NSString 接收方离线时需要在远程推送中携带的非显示数据
successBlock void 消息发送成功的回调 [messageId: 消息的 Id]
errorBlock void 消息发送失败的回调 [nErrorCode: 发送失败的错误码,messageId: 消息的 Id]
返回值 RCMessage 发送的消息实体
- (RCMessage *)sendDirectionalMessage:(RCConversationType)conversationType
                             targetId:(NSString *)targetId
                         toUserIdList:(NSArray *)userIdList
                              content:(RCMessageContent *)content
                          pushContent:(NSString *)pushContent
                             pushData:(NSString *)pushData
                              success:(void (^)(long messageId))successBlock
                                error:(void (^)(RCErrorCode nErrorCode, long messageId))errorBlock;

定向文本

提示

  1. 会话类型仅支持群组和讨论组。
  2. toUserIdList 是需要接收消息者 userId 的集合。
参数 类型 说明
content NSString 文本消息内容
txtMessage RCTextMessage 文本消息对象
ConversationType_PRIVATE RCConversationType(枚举) 单聊会话
    RCTextMessage *txtMessage = [RCTextMessage messageWithContent:content];
    [[RCIMClient sharedRCIMClient]
                sendDirectionalMessage:ConversationType_GROUP
                targetId:@"会话Id"
                toUserIdList:@[@"需要接收消息者的 userId"]
                content:txtMessage
                pushContent:@"远程推送显示的内容"
                pushData:@"远程推送的附加信息"
                success:^(long messageId) {

                }
                error:^(RCErrorCode nErrorCode, long messageId) {

     }];

发送 VoIP 消息

通过 option 设置此消息是否发启 VoIP Push 通知,目前仅支持设置 isVoIPPush,设置 isVoIPPush 为 YES,则对端为 iOS 并且用户未在线时会发送 VoIP Push,默认为 NO,则不会发送 VoIP Push。如对端为 Android 设备则正常发送此消息。

/*!
 发送消息

 @param conversationType    发送消息的会话类型
 @param targetId            发送消息的目标会话ID
 @param content             消息的内容
 @param pushContent         接收方离线时需要显示的远程推送内容
 @param pushData            接收方离线时需要在远程推送中携带的非显示数据
 @param option              消息的相关配置
 @param successBlock        消息发送成功的回调 [messageId:消息的ID]
 @param errorBlock          消息发送失败的回调 [nErrorCode:发送失败的错误码,
 messageId:消息的ID]
 @return                    发送的消息实体

 @discussion 当接收方离线并允许远程推送时,会收到远程推送。
 远程推送中包含两部分内容,一是pushContent,用于显示;二是pushData,用于携带不显示的数据。

 SDK内置的消息类型,如果您将pushContent和pushData置为nil,会使用默认的推送格式进行远程推送。
 自定义类型的消息,需要您自己设置pushContent和pushData来定义推送内容,否则将不会进行远程推送。

 如果您使用此方法发送图片消息,需要您自己实现图片的上传,构建一个RCImageMessage对象,
 并将RCImageMessage中的imageUrl字段设置为上传成功的URL地址,然后使用此方法发送。

 如果您使用此方法发送文件消息,需要您自己实现文件的上传,构建一个RCFileMessage对象,
 并将RCFileMessage中的fileUrl字段设置为上传成功的URL地址,然后使用此方法发送。

 @warning 如果您使用IMLib,可以使用此方法发送消息;
 如果您使用IMKit,请使用RCIM中的同名方法发送消息,否则不会自动更新UI。
 */
- (RCMessage *)sendMessage:(RCConversationType)conversationType
                  targetId:(NSString *)targetId
                   content:(RCMessageContent *)content
               pushContent:(NSString *)pushContent
                  pushData:(NSString *)pushData
                    option:(RCSendMessageOption *)option
                   success:(void (^)(long messageId))successBlock
                     error:(void (^)(RCErrorCode nErrorCode, long messageId))errorBlock;