Приложение зависает и пользовательский интерфейс блокируется, когда задача загрузки выполняется в фоновом режиме
У меня есть фоновая сессия, как показано ниже
-(NSURLSession *)backgroundSession
{
if (session==nil) {
NSURLSessionConfiguration *configuration;
// configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) {
configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.xxx.xxx.BackgroundSession"];
} else
{
configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.xxx.xxx.BackgroundSession"];
}
[configuration setSessionSendsLaunchEvents:YES];
configuration.HTTPMaximumConnectionsPerHost = 1;
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
}
return session;
}
[self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
if ([downloadTasks count] > 0 ) {
NSArray *filtered = [downloadTasks filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(self.taskDescription MATCHES %@)", [NSString stringWithFormat:@"SONGDATA_DOWNLOAD %@",songID]]];
if([filtered count]>0)
{
for(NSURLSessionDownloadTask *PreviousDownloadTask in filtered)
{
if(PreviousDownloadTask.state != NSURLSessionTaskStateRunning && PreviousDownloadTask.state != NSURLSessionTaskStateCompleted)
{
[PreviousDownloadTask resume];
NSLog(@"SONGDATA_DOWNLOAD already in queue %@ task Description %@",filtered,[NSString stringWithFormat:@"SONGDATA_DOWNLOAD %@",songID]);
}
return ;
}
}
}
}];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
self.downloadTask = [[self backgroundSession] downloadTaskWithRequest:request];
downloadTask.taskDescription=[NSString stringWithFormat:@"SONGDATA_DOWNLOAD %@",songID];
[self.downloadTask resume];
Но когда запрос отправляется, он терпит неудачу и получает результат
Произошла ошибка в соединении xpc для настройки фонового сеанса:
Ошибка домена = NSCocoaErrorDomain Code = 4097 "подключение к службе с именем
com.apple.nsurlsessiond "UserInfo = {NSDebugDescription = подключение к
сервис с именем com.apple.nsurlsessiond}
в течение нескольких минут, когда appfreeses и никакие действия пользовательского интерфейса не могут быть выполнены.