文档导航
iOS
SDK 版本:  5.X
公告:融云新文档中心已上线,欢迎到新文档中心阅读 iOS IMLibiOS IMKit 的文档。

下载媒体消息文件

更新时间:2024-02-06 PDF

下载媒体消息文件

SDK 提供多媒体文件的下载功能。

媒体消息中的媒体文件

消息 RCMessage 对象的 content 属性中可能包含媒体消息内容,其中携带了媒体文件地址。常见的媒体消息内容如下:

在收到此类消息时,您可以使用 downloadMediaMessage 下载其中的媒体文件。

下载媒体消息中的媒体文件

提示

SDK 版本 从 5.6.6 开始,提供传入 RCMessage 下载媒体文件的方法,同时废弃传入消息 ID 下载媒体文件的方法。

SDK 版本 ≧ 5.6.6)下载媒体文件至本地后,消息内容体 RCMessageContent 中的媒体文件本地路径 localPath 会被更新。

[[RCCoreClient sharedCoreClient] downloadMediaMessage:message
                                      progressBlock:^(int progress) {
                                          // Update UI with download progress
                                      }
                                       successBlock:^(NSString *mediaPath) {
                                           // Handle successful download
                                       }
                                         errorBlock:^(RCErrorCode errorCode) {
                                             // Handle download error
                                         }
                                        cancelBlock:^{
                                            // Handle download cancellation
                                        }];
              
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13

参数 类型 说明
message RCMessage 消息对象。
progressBlock Block 当前的下载进度的回调,返回 int 类型的下载进度,范围 [0, 100]。
successBlock Block 下载消息成功的回调,返回 NSString 类型的本地路径,同时消息内容体中的 localPath 会被更新为返回的 mediaPath
errorBlock Block 下载消息失败的回调,返回错误码 RCErrorCode
cancelBlock Block 取消下载的回调。

SDK 版本 < 5.6.6)下载媒体文件至本地后,消息内容体 RCMessageContent 中的媒体文件本地路径 localPath 会被更新。

[[RCCoreClient sharedCoreClient] downloadMediaMessage:messageId
                                             progress:^(int progress) { }
                                              success:^(NSString *mediaPath) { }
                                                error:^(RCErrorCode errorCode) { }
                                               cancel:^{ }];
              
已复制
1
2
3
4
5

暂停下载媒体消息中的媒体文件

提示

暂停下载功能仅在 5.6.6 及之后版本支持。

在下载过程中可以暂停下载。如需恢复下载,重新调用下载方法,支持断点续传。

[[RCCoreClient sharedCoreClient] pauseDownloadMediaMessage:message
                                            successBlock:^{
                                                // Handle pause success
                                            }
                                              errorBlock:^(RCErrorCode errorCode) {
                                                  // Handle pause error
                                              }];
              
已复制
1
2
3
4
5
6
7

取消下载媒体消息中的媒体文件

提示

SDK 版本 从 5.6.6 开始,提供异步方法,原同步方法废弃。

SDK 版本 ≧ 5.6.6)异步取消下载媒体消息中的媒体文件。如果 RCErrorCode-3/OPERATION_MEDIA_NOT_FOUND,表示下载任务已经结束,或者消息不存在。

[[RCCoreClient sharedCoreClient] cancelDownloadMediaMessage:message
                                             successBlock:^{
                                                 // Handle cancellation success
                                             }
                                               errorBlock:^(RCErrorCode errorCode) {
                                                   // Handle cancellation error
                                               }];
              
已复制
1
2
3
4
5
6
7

SDK 版本 < 5.6.6)取消下载媒体消息中的媒体文件。返回 YES 表示取消成功。返回 NO 表示取消失败,即已经下载完成或者消息不存在。

BOOL cancelResult = [[RCCoreClient sharedCoreClient] cancelDownloadMediaMessage:messageId];
              
已复制
1

网络媒体文件

SDK 提供一个媒体文件下载器,可通过网络 URL 下载文件,不会操作消息体。

通过 URL 下载网络媒体文件

使用此方法通过 URL 下载文件,该方法不会操作消息体。返回的 mediaPath 会包含入参中指定的文件名。

[[RCCoreClient sharedCoreClient] downloadMediaFile:@"filename.png"
                                        mediaUrl:@"http://remote.url"
                                        progress:^(int progress) { }
                                         success:^(NSString *mediaPath) { }
                                           error:^(RCErrorCode errorCode) { }
                                          cancel:^{ } ];
              
已复制
1
2
3
4
5
6

参数 类型 说明
fileName mediaUrl 指定的文件名称,必须指定文件后缀,例如 rongCloud.mov
mediaUrl NSString 媒体文件远端 URL。
progressBlock Block 当前的下载进度的回调,返回 int 类型的下载进度,范围 [0, 100]。
successBlock Block 下载消息成功的回调,返回 NSString 类型的本地路径。
errorBlock Block 下载消息失败的回调,返回错误码 RCErrorCode
cancelBlock Block 取消下载的回调。

通过文件的网络 URL 下载图片。此方法仅仅是文件下载器,不会操作消息体。SDK 会通过拼接输入参数中的会话类型、会话 ID、媒体类型生成文件名,在 mediaPath 中返回。该方法仅支持下载图片。

[[RCCoreClient sharedCoreClient] downloadMediaFile:ConversationType_GROUP
                                          targetId:@"targetId"
                                         mediaType:MediaType_IMAGE
                                          mediaUrl:@"remoteurl"
                                          progress:^(int progress) { }
                                           success:^(NSString *mediaPath) { }
                                             error:^(RCErrorCode errorCode) { }
                                            cancel:^{ }];
              
已复制
1
2
3
4
5
6
7
8

参数 类型 说明
conversationType RCConversationType 会话类型
targetId NSString 会话 ID
mediaType RCMediaType 多媒体类型,该方法仅支持下载图片(MediaType_IMAGE)。
mediaUrl NSString 媒体文件远端 URL。
progressBlock Block 当前的下载进度的回调,返回 int 类型的下载进度,范围 [0, 100]。
successBlock Block 下载消息成功的回调,返回 NSString 类型的本地路径。
errorBlock Block 下载消息失败的回调,返回错误码 RCErrorCode
cancelBlock Block 取消下载的回调。

暂停下载网络媒体文件

提示

暂停下载功能仅在 5.6.6 及之后版本支持。

在下载过程中可以暂停下载。如需恢复下载,重新调用下载方法,支持断点续传。

[[RCCoreClient sharedCoreClient] pauseDownloadMediaUrl:mediaUrl
                                        successBlock:^{
                                            // Handle pause success
                                        }
                                          errorBlock:^(RCErrorCode errorCode) {
                                              // Handle pause error
                                          }];
              
已复制
1
2
3
4
5
6
7

取消下载网络媒体文件

提示

SDK 版本 从 5.6.6 开始,提供异步取消下载方法,原同步方法废弃。

SDK 版本 ≧ 5.6.6)异步取消下载网络媒体文件。如果 RCErrorCode-3/OPERATION_MEDIA_NOT_FOUND,表示下载任务已经结束。

[[RCCoreClient sharedCoreClient] cancelDownloadMediaUrl:mediaUrl
                                          successBlock:^{
                                              // Handle cancellation success
                                          }
                                            errorBlock:^(RCErrorCode errorCode) {
                                                // Handle cancellation error
                                            }];
              
已复制
1
2
3
4
5
6
7

SDK 版本 < 5.6.6)取消下载网络媒体文件。返回 YES 表示取消成功。返回 NO 表示取消失败,即已经下载完成或者消息不存在。

BOOL cancelResult = [[RCCoreClient sharedCoreClient] cancelDownloadMediaUrl:@"remoteurl"];
              
已复制
1

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈