AVAssetDownloadURLSession & AVAggregateAssetDownloadTask background downloads issue

I try to download two HLS asset simultaneously in background. After the first task completed, iOS killed application, because application did not call completionHandler for background session. iOS call handleEventsForBackgroundURLSession for each AVAggregateAssetDownloadTask with some different identifiers. How can i download a few AVAggregateAssetDownloadTask at the same time in background?


Step to reproduce:

1) Create AVAssetDownloadURLSession session

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"some.id"];
    configuration.networkServiceType = NSURLNetworkServiceTypeBackground;
    configuration.allowsCellularAccess = NO;
[AVAssetDownloadURLSession sessionWithConfiguration:configuration
                                  assetDownloadDelegate:self
                                        delegateQueue:nil]


2) Create two AVAggregateAssetDownloadTask task:

AVAggregateAssetDownloadTask *task = [self.urlSession aggregateAssetDownloadTaskWithURLAsset:avAsset
          mediaSelections:mediaSelections
          assetTitle:@"title"
          assetArtworkData:artworkData
          options:nil];
[task resume];


3) Transfer app to background

4) Wait for callback from iOS

- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler{
     NSLog(@"%@", identifier);
}


Result:

some.id.2.childAssetDownloadTasks


iOS create new background NSURLSession for each AVAggregateAssetDownloadTask.

Replies

I have the exact same problem that you described.. My app gets killed


Forcing crash report with description: <processid> has active assertions beyond permitted time: ... 
"com.apple.nsurlsessiond.handlesession <appid>.<backgroundsessionID>.1.childAssetDownloadTasks" (backgroundDownload: 30s); .... (owner: nsurlsessiond: 939)