图片消息中的图片能否用自己的服务器存储?

本文仅适用于 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

文件原图是上传到自己服务器 , 融云会将缩略图发送过去.