- Android
- iOS
- Flutter
- ReactNative
When sending a media message with sendMediaMessage, developers can customize the upload of MediaMessageContent, take over the upload logic, and upload files to their own file server.
Code Example
JIM.getInstance().getMessageManager().setMessageUploadProvider(this);
// developer implements the upload method
@Override
public void uploadMessage(Message message, UploadCallback uploadCallback) {
Handler mH = new Handler(Looper.getMainLooper());
mH.postDelayed(new Runnable() {
@Override
public void run() {
//simulate upload-progress callbacks
uploadCallback.onProgress(50);
}
}, 100);
mH.postDelayed(new Runnable() {
@Override
public void run() {
MediaMessageContent mediaMessageContent = (MediaMessageContent) message.getContent();
String localPath = mediaMessageContent.getLocalPath();
// read the file from localPath and upload it
if (true) {
//upload succeeded
mediaMessageContent.setUrl("xxxxxx");//uploaded file URL
uploadCallback.onSuccess(message);
} else {
uploadCallback.onError();
}
}
}, 1000);
}
When sending a media message with sendMediaMessage, developers can customize the upload of JMediaMessageContent, take over the upload logic, and upload files to their own file server.
Code Example
[JIM.shared.messageManager setMessageUploadProvider:self];
// developer implements the upload method
- (void)uploadMessage:(JMessage *)message
progress:(void (^)(int))progressBlock
success:(void (^)(JMessage * _Nonnull))successBlock
error:(void (^)(void))errorBlock cancel:(void (^)(void))cancelBlock {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//simulate upload-progress callbacks
progressBlock(50);
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_global_queue(0, 0), ^{
JMediaMessageContent *content = (JMediaMessageContent *)message.content;
NSString *localPath = content.localPath;
// read the file from localPath and upload it
if (YES) {
//upload succeeded
content.url = @"xxx";//uploaded file URL
successBlock(message);
} else {
//upload failed
errorBlock();
}
});
}
Not supported.
Not supported.