下载媒体消息文件
下载媒体消息文件
SDK 提供多媒体文件的下载功能。
媒体消息中的媒体文件
消息 RCMessage 对象的 content
属性中可能包含媒体消息内容,其中携带了媒体文件地址。常见的媒体消息内容如下:
- RCFileMessage:文件消息内容
- RCImageMessage:图片消息内容
- RCGIFMessage:GIF 消息内容
- RCHQVoiceMessage:高清语音消息
- RCSightMessage:小视频消息内容
在收到此类消息时,您可以使用 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