跳到主要内容

发送超级群定向消息

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

局限

  • 5.6.9 版本开始支持该能力。
  • 定向目标用户上限 300 个用户 ID。
  • 如果为 @ 消息,不支持 @所有人。

发送定向普通消息

使用 sendDirectionalMessage 在超级群中发送普通消息给指定频道中的指定用户。不在接收列表的用户不会收到这条消息。

请在消息对象中设置超级群会话类型、超级群 ID 和 频道 ID。频道 ID 为空时默认向 RCDefault 频道发送消息。注意,Message 中不会保存接收用户 ID 列表。

Conversation.ConversationType type = Conversation.ConversationType.GROUP;
String targetId = "123";
TextMessage content = TextMessage.obtain("定向消息文本内容");
Message message = Message.obtain(targetId, conversationType, channelId, 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(channelId)会话 ID(targetId),消息内容(content)。
userIdsString[]需要接收消息的用户列表。
pushContentString修改或指定远程消息推送通知栏显示的内容。您也可以在 Message 的推送属性(MessagePushConfig)中配置,会覆盖此处配置,详见自定义消息推送通知
  • 如果希望使用融云默认推送通知内容,可以填 null。注意自定义消息类型无默认值。
  • 如果要为该条消息指定个性化的离线推送通知,必须在以上任一处向融云提供 pushContent 字段内容。
  • 如果您自定义的消息类型需要离线推送服务,必须在以上任一处向融云提供 pushContent 字段内容,否则用户无法收到离线推送通知。
pushDataString远程推送附加信息。对端收到远程推送消息时,可通过以下方法获取该字段内容:

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

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

发送定向媒体消息

使用 sendDirectionalMediaMessage 在超级群中发送多媒体消息给指定的频道中的单个或多个用户。

请在消息对象中设置超级群会话类型、超级群 ID 和 频道 ID。频道 ID 为空时默认向 RCDefault 频道发送消息。注意,Message 中不会保存接收用户 ID 列表。

String targetId = "目标 ID";
ConversationType conversationType = ConversationType.ULTRA_GROUP;
Uri localUri = Uri.parse("file://图片的路径");//图片本地路径,接收方可以通过 getThumUri 获取自动生成的缩略图 Uri
boolean mIsFull = true; //是否发送原图
ImageMessage mediaMessageContent = ImageMessage.obtain(localUri, mIsFull);
Message message = Message.obtain(targetId, conversationType, channelId, 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发送媒体消息的回调