发送消息
注意
以下三个接口,1 秒钟最多可以调用 5 次,也就是 1 秒钟最多只允许发送 5 条消息,否则会导致后面的消息发送失败。
普通消息¶
提示
- 远程推送中包含两部分内容,一是
pushContent
,用于显示;二是pushData
,用于携带不显示的数据。 - 自定义类型的消息,需要开发者自己设置
pushContent
和pushData
来定义推送内容,否则将不会进行远程推送。 - 如果开发者使用此方法发送图片消息,需要开发者自己实现图片的上传,构建一个
RCImageMessage
对象,并将RCImageMessage
中的imageUrl
字段设置为上传成功的URL地址,然后使用此方法发送。 - 如果开发者使用此方法发送文件消息,需要开发者自己实现文件的上传,构建一个
RCFileMessage
对象,并将RCFileMessage
中的fileUrl
字段设置为上传成功的URL
地址,然后使用此方法发送。 - 如果开发者使用
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;
图片¶
提示
- 会话类型以单聊为例。
- 可以使用 UIImage 对象来构造图片消息。
- 缩略图尺寸为:240 x 240 像素,以宽度和高度中较长的边不超过 240 像素等比压缩。
- 大图尺寸为:960 x 960 像素,以宽度和高度中较长的边不超过 960 像素等比压缩。
- 发送媒体消息会先上传媒体消息数据,上传成功后再发送消息。
- 可以将媒体数据上传到指定服务器
参数 | 类型 | 说明 |
---|---|---|
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;
定向文本¶
提示
- 会话类型仅支持群组和讨论组。
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;