Фоновая загрузка в iOS 9. Умирает через 1 час

В нашем приложении мы используем фоновую выборку для получения пользовательских данных (местоположение, подключения и т. д.), и через 1 час в фоновом режиме приложение умирает, и у нас нет никаких обновлений. Почему это происходит и как мы можем получить результаты через 1 час?

Это наш код:

-- AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
    ...
}

- (void)application: (UIApplication *)application performFetchWithCompletionHandler:(void(^) (UIBackgroundFetchResult))completionHandler {
    NSDictionary *fetchData = ...
    NSString * baseUrl = @"http://......";
    for(NSString *fetchKey in fetchData) {
        baseUrl = [baseUrl stringByAppendingString:[NSString stringWithFormat:@"?%@=%@", fetchKey, [fetchData objectForKey:fetchKey]]];
    }

    NSURLSession *session = [self backgroundSession];
    NSURL *url = [[NSURL alloc] initWithString:baseUrl];
    [[session downloadTaskWithURL:url] resume];

    ...
}

- (NSURLSession *)backgroundSession
{
    static NSURLSession *session = nil;
    NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.username.app"];
    sessionConfiguration.sessionSendsLaunchEvents = YES;
    sessionConfiguration.discretionary = YES;

    return session;
}

Благодарю вас!


person Jagga-Jagga    schedule 22.01.2016    source источник
comment
Фоновая выборка имеет ограниченный временной ресурс для выполнения задачи. проверьте эту ссылку для получения дополнительной информации. stackoverflow.com/questions/25210848/.   -  person Muneeba    schedule 22.01.2016
comment
@Muneeba Но мы используем фоновую выборку каждые 15 минут, и у нас есть стабильные результаты. Мы начинаем терять результаты после 1 часа фоновой работы.   -  person Jagga-Jagga    schedule 22.01.2016
comment
Возможно, у вас закончилось время или ваша задача занимает слишком много времени, поэтому ОС завершает ее. Также Apple не разрешает более длительное выполнение задач в фоновом режиме. Вам нужно выбрать альтернативу. Вы можете получить обновленные данные при следующем запуске приложения пользователем. или когда приложение становится активным.   -  person Muneeba    schedule 25.01.2016