首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能“暂停”和“恢复”AVAssetDownloadTask?

是否有可能“暂停”和“恢复”AVAssetDownloadTask?
EN

Stack Overflow用户
提问于 2019-03-11 13:20:13
回答 1查看 763关注 0票数 2

到目前为止,我只发现下载视频的两个选项--“简历”或“取消”/“暂停”。有没有可能在中间暂停下载视频,然后从它停止的地方继续下载。我正在使用下面的代码下载和存储视频。

代码语言:javascript
复制
  // Create new background session configuration.
    NSURLSessionConfiguration *urlSessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"assetDowloadConfigIdentifier"];
    AVAssetDownloadURLSession *avAssetDownloadSession = [AVAssetDownloadURLSession sessionWithConfiguration:urlSessionConfiguration assetDownloadDelegate:self delegateQueue:[NSOperationQueue mainQueue]];

    NSURL *assetURL = [NSURL URLWithString:@"https://a4i6y2k6.stackpathcdn.com/vistvorigin/smil:4b0d690b7b3bc8ac5da2049f50c80794c762423e.smil/playlist.m3u8"];

    AVURLAsset *hlsAsset = [AVURLAsset assetWithURL:assetURL];

   if (@available(iOS 10.0, *)) {

        AVAssetDownloadTask *avAssetDownloadTask = [avAssetDownloadSession assetDownloadTaskWithURLAsset:hlsAsset assetTitle:@"downloadedMedia" assetArtworkData:nil options:nil];

        if([command isEqualToString:@"resume"]){
            // Start task and begin download
            [avAssetDownloadTask resume];
        }else{
            [avAssetDownloadTask cancel];
        }

    } else {
        // Fallback on earlier versions
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 06:36:05

在这里您可以使用suspend的状态

任务虽然挂起,但不会产生网络流量,也不受超时的影响。下载任务可以在以后继续传输数据。所有其他任务必须在恢复时重新开始。

如果要查找使用state属性的当前任务状态,它将返回当前状态,状态如下

代码语言:javascript
复制
 /* 
NSURLSessionTaskStateRunning = 0,                     
NSURLSessionTaskStateSuspended = 1,
NSURLSessionTaskStateCanceling = 2,                   
NSURLSessionTaskStateCompleted = 3,  

例如,你可以像这样使用

代码语言:javascript
复制
 NSURL *assetURL = [NSURL URLWithString:@"https://a4i6y2k6.stackpathcdn.com/vistvorigin/smil:4b0d690b7b3bc8ac5da2049f50c80794c762423e.smil/playlist.m3u8"];

AVURLAsset *hlsAsset = [AVURLAsset assetWithURL:assetURL];

if (@available(iOS 10.0, *)) {

    AVAssetDownloadTask *avAssetDownloadTask = [avAssetDownloadSession assetDownloadTaskWithURLAsset:hlsAsset assetTitle:@"downloadedMedia" assetArtworkData:nil options:nil];
    if(avAssetDownloadTask.state ==  1){
        // Start task and begin download
        [avAssetDownloadTask resume];
    }else{
        [avAssetDownloadTask cancel];
    }


} else {
    // Fallback on earlier versions
}

选项2

如果您想以KVO模式执行,请参阅此SO past answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55102764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档