本文仅适用于 IMKit SDK 4.X 版本。
支持。
/**
* <p>发送图片消息,可以使用该方法将图片上传到自己的服务器发送,同时更新图片状态。
* 使用该方法在上传图片时,会回调 {@link io.rong.imlib.RongIMClient.SendImageMessageWithUploadListenerCallback}
* 此回调中会携带 {@link UploadImageStatusListener} 对象,使用者只需要调用其中的
* {@link UploadImageStatusListener#update(int)} 更新进度
* {@link UploadImageStatusListener#success(Uri)} 更新成功状态,并告知上传成功后的图片地址
* {@link UploadImageStatusListener#error()} 更新失败状态 </p>
*
* @param message 发送消息的实体。
* @param pushContent 当下发 push 消息时,在通知栏里会显示这个字段。
* 如果发送的是自定义消息,该字段必须填写,否则无法收到 push 消息。
* 如果发送 sdk 中默认的消息类型,例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg,则不需要填写,默认已经指定。
* @param pushData push 附加信息。如果设置该字段,用户在收到 push 消息时,能通过 {@link io.rong.push.notification.PushNotificationMessage#getPushData()} 方法获取。
* @param callback 发送消息的回调,回调中携带 {@link UploadImageStatusListener} 对象,用户调用该对象中的方法更新状态。
* {@link #sendImageMessage(Message, String, String, SendImageMessageCallback)}
*/
public void sendImageMessage(final Message message,
final String pushContent,
final String pushData,
final SendImageMessageWithUploadListenerCallback callback) {
if (message == null) {
RLog.e(TAG, "message is null!");
if (callback != null)
callback.onError(null, ErrorCode.PARAMETER_ERROR);
return;
}
if (mLibHandler == null) {
RLog.e(TAG, "sendImageMessage IPC 进程尚未运行!");
if (callback != null)
callback.onError(message, ErrorCode.IPC_DISCONNECT);
return;
}
ResultCallback<Message> insertCallback = new ResultCallback<Message>() {
@Override
public void onSuccess(Message message) {
if (message != null) {
message.setSentStatus(Message.SentStatus.SENDING);
setMessageSentStatus(message.getMessageId(), Message.SentStatus.SENDING, null);
if (callback != null) {
UploadImageStatusListener watcher = new UploadImageStatusListener(message, pushContent, pushData, callback);
callback.onAttachedCallback(message, watcher);
}
} else {
throw new IllegalArgumentException("Message Content 为空!");
}
}
@Override
public void onError(ErrorCode e) {
if (callback != null)
callback.onError(message, e);
}
};
insertMessage(message.getConversationType(), message.getTargetId(), null, message.getContent(), insertCallback);
}
调用此接口 其中回调
SendImageMessageWithUploadListenerCallback
文件原图是上传到自己服务器 , 融云会将缩略图发送过去.