здесь вы можете использовать состояние suspend
Задача, хотя она и приостановлена, не генерирует сетевой трафик и не подвержена тайм-аутам.Задача загрузки может продолжить передачу данных позднее.Все остальные задачи должны начинаться заново при возобновлении.
, если вы хотите найти текущее состояние задачи, используйте свойство state
, оно вернет текущее состояние, состояния следующие
/*
NSURLSessionTaskStateRunning = 0,
NSURLSessionTaskStateSuspended = 1,
NSURLSessionTaskStateCanceling = 2,
NSURLSessionTaskStateCompleted = 3,
для, например, вы можете использовать как
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, см.это ТАК прошлый ответ