跳到主要内容

发送群定向消息

可发送普通消息与媒体消息给群组中的指定的一个或多个成员,其他成员不会收到该消息。

开通服务

使用发送群组定向消息功能无需开通服务。注意,如需将群组定向消息存入服务端历史消息记录,需要开通以下服务:

  • 单群聊历史消息云存储服务,可前往控制台 IM 服务管理页面为当前使用的 App Key 开启服务。IM 旗舰版IM 尊享版可开通该服务。具体功能与费用以融云官方价格说明页面及计费说明文档为准。
  • 群定向消息云存储服务,需要提交工单申请开通。

默认情况下,客户端发送与接收的群定向消息默认都不会存入历史消息服务,因此客户端调用获取历史消息的 API 时,从融云服务端返回的结果中不会包含当前用户发送、接收的群组定向消息。

发送群组定向普通消息

在群组中发送普通消息给群组中的指定用户。不在接收列表的其它用户不会收到这条消息。注意,Message 中仅保存群组 ID(Target ID),不会保存接收用户 ID 列表。

Conversation.ConversationType type = Conversation.ConversationType.GROUP;
String targetId = "123";
TextMessage content = TextMessage.obtain("定向消息文本内容");
Message message = Message.obtain(targetId, conversationType, messageContent);

String[] userIds = new String[]{"id_01", "id_02"};

RongCoreClient.getInstance().sendDirectionalMessage(message, userIds, null, null, new IRongCoreCallback.ISendMessageCallback() {
@Override
public void onAttached(Message message) {

}

@Override
public void onSuccess(Message message) {

}

@Override
public void onError(final Message message, IRongCoreEnum.CoreErrorCode errorCode) {

}
});

sendDirectionalMessage 中直接提供了用于控制推送通知内容(pushContent)和推送附加信息(pushData)的参数。不过,如果您需要更精细地控制离线推送通知,例如标题、内容、图标、或其他第三方厂商个性化配置,请使用消息推送属性进行配置。

  • 如果发送的消息属于 SDK 内置的普通消息类型,例如 TextMessage,这两个参数可设置为 null。一旦消息触发离线推送通知时,融云服务端会使用各个内置消息类型默认的 pushContent 值。关于各类型消息的默认推送通知内容,详见用户内容类消息格式
  • 如果消息类型为自定义消息类型,且需要支持离线推送通知,则必须向融云提供 pushContent 字段,否则用户无法收到离线推送通知。
  • 如果消息类型为自定义消息类型,但不需要支持远程推送通知(例如通过自定义消息类型实现的 App 业务层操作指令),可将 pushContent 字段留空。
  • Message 的推送属性配置 MessagePushConfigpushContentpushData 会覆盖此处配置,并提供更多配置能力,例如自定义推送通知的标题。详见自定义消息推送通知
参数类型说明
messageMessage要发送的消息体。必填属性包括会话类型(conversationType),会话 ID(targetId),消息内容(content)。注意,群组定向消息要求会话类型为 Conversation.ConversationType.GROUP
userIdsString[]需要接收消息的用户列表。
pushContentString修改或指定远程消息推送通知栏显示的内容。您也可以在 Message 的推送属性(MessagePushConfig)中配置,会覆盖此处配置,详见自定义消息推送通知
  • 如果希望使用融云默认推送通知内容,可以填 null。注意自定义消息类型无默认值。
  • 如果要为该条消息指定个性化的离线推送通知,必须在以上任一处向融云提供 pushContent 字段内容。
  • 如果您自定义的消息类型需要离线推送服务,必须在以上任一处向融云提供 pushContent 字段内容,否则用户无法收到离线推送通知。
pushDataString远程推送附加信息。对端收到远程推送消息时,可通过以下方法获取该字段内容:

io.rong.push.notification.PushNotificationMessage#getPushData()

。您也可以在 Message 的推送属性(MessagePushConfig)中配置,会覆盖此处配置,详见自定义消息推送通知
callbackISendMessageCallback发送消息的回调。

发送群组定向媒体消息

在群聊中发送多媒体消息给指定的单个或多个用户。注意,Message 中仅保存群组 ID(Target ID),不会保存接收用户 ID 列表。

String targetId = "目标 ID";
ConversationType conversationType = ConversationType.PRIVATE;
Uri localUri = Uri.parse("file://图片的路径");//图片本地路径,接收方可以通过 getThumUri 获取自动生成的缩略图 Uri
boolean mIsFull = true; //是否发送原图
ImageMessage mediaMessageContent = ImageMessage.obtain(localUri, mIsFull);

Message message = Message.obtain(targetId, conversationType, mediaMessageContent);

String[] userIds = new String[]{"id_01", "id_02"};

RongCoreClient.getInstance().sendDirectionalMediaMessage(message, userIds, null, null, new IRongCoreCallback.ISendMediaMessageCallback() {
@Override
public void onProgress(Message message, int i) {

}

@Override
public void onCanceled(Message message) {

}

@Override
public void onAttached(Message message) {

}

@Override
public void onSuccess(Message message) {

}

@Override
public void onError(final Message message, final IRongCoreEnum.CoreErrorCode errorCode) {

}
});

sendDirectionalMediaMessage 中直接提供了用于控制推送通知内容(pushContent)和推送附加信息(pushData)的参数。不过,如果您需要更精细地控制离线推送通知,例如标题、内容、图标、或其他第三方厂商个性化配置,请使用消息推送属性进行配置,详见自定义消息推送通知

  • 如果发送的消息属于 SDK 内置的媒体消息类型,例如 ImageMessage,这两个参数可设置为 null。一旦消息触发离线推送通知时,融云服务端会使用各个内置消息类型默认的 pushContent 值。关于各类型消息的默认推送通知内容,详见用户内容类消息格式
  • 如果消息类型为自定义消息类型,且需要支持离线推送通知,则必须向融云提供 pushContent 字段,否则用户无法收到离线推送通知。
  • 如果消息类型为自定义消息类型,但不需要支持远程推送通知(例如通过自定义消息类型实现的 App 业务层操作指令),可将 pushContent 字段留空。
  • Message 的推送属性配置 MessagePushConfigpushContentpushData 会覆盖此处配置,并提供更多配置能力,例如自定义推送通知的标题。详见自定义消息推送通知
参数类型说明
messageMessage要发送的消息体。必填属性包括会话类型(conversationType),会话 ID(targetId),消息内容(content)。注意,群组定向消息要求会话类型为 Conversation.ConversationType.GROUP
userIdsString[]需要接收消息的用户列表。
pushContentString修改或指定远程消息推送通知栏显示的内容。您也可以在 Message 的推送属性(MessagePushConfig)中配置,会覆盖此处配置,详见自定义消息推送通知
  • 如果希望使用融云默认推送通知内容,可以填 null。注意自定义消息类型无默认值。
  • 如果要为该条消息指定个性化的离线推送通知,必须在以上任一处向融云提供 pushContent 字段内容。
  • 如果您自定义的消息类型需要离线推送服务,必须在以上任一处向融云提供 pushContent 字段内容,否则用户无法收到离线推送通知。
pushDataString远程推送附加信息。对端收到远程推送消息时,可通过以下方法获取该字段内容:

io.rong.push.notification.PushNotificationMessage#getPushData()

。您也可以在 Message 的推送属性(MessagePushConfig)中配置,会覆盖此处配置,详见自定义消息推送通知
callbackISendMediaMessageCallback发送媒体消息的回调