发送消息
注意
以下三个接口,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;