发送群定向消息
IMLib SDK 支持往群聊会话中发送定向消息。定向消息只会发送给指定的一个或多个成员,群聊会话中的其它用户不会收到这条消息。
开通服务
使用发送群组定向消息功能无需开通服务。注意,如需将群组定向消息存入服务端历史消息记录,需要开通以下服务:
- 单群聊历史消息云存储服务。可前往控制台 IM 服务管理页面为当前使用的 App Key 开启服务。IM 旗舰版或IM 尊享版可开通该服务。具体功能与费用以融云官方价格说明页面及计费说明文档为准。
- 群定向消息云存储服务。您可在融云控制台,通过应用配置>IM 服务>免费基础功能>单群聊,开通群定向消息云存储。
默认情况下,客户端发送与接收的群定向消息默认都不会存入历史消息服务,因此客户端调用获取历史消息的 API 时,从融云服务端返回的结果中不会包含当前用户发送、接收的群组定向消息。
发送群组定向普通消息
在群组中发送普通消息给指定的单个或多个用户。
以发送文本消息为例,您需要构造 RCMessage
,然后调用 sendDirectionalMessage:toUserIdList:pushContent:pushData:attached:successBlock:errorBlock: 发送消息。注意,RCMessage
中仅保存群组 ID(Target ID),不会保存接收用户 userId 列表。
接口原型
Objective C
- (void)sendDirectionalMessage:(RCMessage *)message
toUserIdList:(NSArray<NSString *> *)userIdList
pushContent:(nullable NSString *)pushContent
pushData:(nullable NSString *)pushData
attached:(nullable void(^)(RCMessage *_Nullable message))attachedBlock
successBlock:(nullable void (^)(RCMessage *successMessage))successBlock
errorBlock:(nullable void (^)(RCErrorCode nErrorCode, RCMessage *errorMessage))errorBlock;
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | RCMessage | 消息对象。 |
userIdList | NSArray | 将要发送的用户列表。 |
pushContent | NSString | 自定义推送显示内容。 |
pushData | NSString | 远程推送的附加信息。 |
attachedBlock | Block | 消息入库回调,message 为已存数据库的消息体。 |
successBlock | Block | 发送消息成功的回调。 |
errorBlock | Block | 发送消息失败的回调,其中包含错误码 RCErrorCode 和发送失败的消息。 |
示例代码
Objective C
RCTextMessage *text = [RCTextMessage messageWithContent:@"你好"];
RCMessage *message = [[RCMessage alloc] initWithType:ConversationType_GROUP targetId:@"Group1" direction:MessageDirection_SEND messageId:-1 content:text];
[[RCCoreClient sharedCoreClient] sendDirectionalMessage:message
toUserIdList:@[@"user1",@"user2"]
pushContent:nil
pushData:nil
attached:^(RCMessage * _Nullable message) {
} successBlock:^(RCMessage * _Nonnull successMessage) {
} errorBlock:^(RCErrorCode nErrorCode, RCMessage * _Nonnull errorMessage) {
}];
发送定向媒体消息
提示
SDK 从 5.2.5 版本开始支持往群聊中发送定向媒体消息。
在群聊中发送多媒体消息给指定的单个或多个用户。
以发送图片消息为例,您需要构造 RCMessage
,然后调用 sendDirectionalMediaMessage:toUserIdList:pushContent:pushData:attached:progress:successBlock:errorBlock:cancel: 发送消息。注意,RCMessage
中仅保存群组 ID(Target ID),不会保存接收用户 userId 列表。
接口原型
Objective C
- (void)sendDirectionalMediaMessage:(RCMessage *)message
toUserIdList:(NSArray<NSString *> *)userIdList
pushContent:(nullable NSString *)pushContent
pushData:(nullable NSString *)pushData
attached:(nullable void(^)(RCMessage *_Nullable message))attachedBlock
progress:(nullable void (^)(int progress, RCMessage *progressMessage))progressBlock
successBlock:(nullable void (^)(RCMessage *successMessage))successBlock
errorBlock:(nullable void (^)(RCErrorCode nErrorCode, RCMessage *errorMessage))errorBlock
cancel:(nullable void (^)(RCMessage *cancelMessage))cancelBlock;
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | RCMessage | 消息对象 |
userIdList | NSArray | 将要发送的用户列表 |
pushContent | NSString | 自定义推送显示内容 |
pushData | NSString | 远程推送的附加信息 |
progress | Block | 发送消息进度更新的回调 |
successBlock | Block | 消息入库回调,message 为已存数据库的消息体 |
successBlock | Block | 发送消息成功的回调 |
errorBlock | Block | 发送消息失败的回调,其中包含错误码 RCErrorCode 和发送失败的消息 |
cancel | Block | 用户取消消息发送的回调 |
示例代码
Objective C
RCImageMessage *imageMessage = [RCImageMessage messageWithImageURI:@"https://test.png"];
RCMessage *message = [[RCMessage alloc] initWithType:ConversationType_GROUP targetId:@"Group1" direction:MessageDirection_SEND messageId:-1 content:imageMessage];
[[RCCoreClient sharedCoreClient] sendDirectionalMediaMessage:message toUserIdList:@[@"user1",@"user2"] pushContent:nil pushData:nil attached:^(RCMessage * _Nullable message) {
}progress:^(int progress, RCMessage * _Nonnull progressMessage) {
// 多媒体上传进度回调
} successBlock:^(RCMessage * _Nonnull successMessage) {
// 发送成功
} errorBlock:^(RCErrorCode nErrorCode, RCMessage * _Nonnull errorMessage) {
// 发送失败
} cancel:^(RCMessage * _Nonnull cancelMessage) {
// 用户取消发送
}];